Links

Перенос сайта на 1C-Bitrix на наш хостинг

Подготавливаем страницу "сайт закрыт"

Для того, чтобы посетители сайта не вносили изменения в базу данных во время переноса сайта (не заполняли формы, не заказывали товары) сайт нужно будет временно закрыть, но это чуть позже. По желанию, можно вместо стандартной страницы с сообщением о том, что сайт закрыт (красный прямоугольник с каким то текстом на английском на белом фоне) оформить красивую страницу, на которой будет сообщаться о проведении технических работ.
Страница "Сайт закрыт" находится по пути /bitrix/modules/main/include/site_closed.php

На старом хостинге выполняем архивацию всего сайта

Для этого, необходимо перейти в папку с сайтом и запустить архивацию всех файлов, кроме временных и кэша, при помощи команды tar
Стоит обратить внимание на наличие символьных ссылок на папку bitrix и upload. Если они есть, то возможно, их нужно будет архивировать отдельно. Команда ниже может скопировать только сам файл символьной ссылки, но не перейдет по ней, оставив все файлы ядра так и лежать в другой папке.
tar -cvzf <имя_создаваемого_архива.tar.gz> ./ --exclude=./bitrix/cache/* --exclude=./bitrix/managed_cache/* --exclude=./bitrix/backup/* --exclude=./bitrix/tmp/* --exclude=./upload/tmp/* --exclude=./upload/*cache*/*

Подготавливаем файловую структуру

Для этого на нашем хостинге, под нужным пользователем (для каждого заказчика на сервере создается свой пользователь), из его домашней директории (~) переходим в папку www и создаем в ней еще одну папку, имя которой должно повторять имя доменна сайта (mysite.com).
Внутри неё создаем папку, соответсвующую типу сайта.
prod - production, основной сайт opt - поддомен для оптовиков (opt.mysite.com) dev - development, копия сайта для разработки (dev.mysite.com)
Если сайт только один (prod) то создаем только эту папку Если сайтов несколько (например основной и оптовый), и они используют одно и тоже ядро (у них общая папка bitrix), тогда дополнительно создаем папку shared, в которую потом будут помещены папки bitrix и upload.
~ домашняя папка пользователя
|
+-- www
|
+-- mysite_a.com
| |
| +-- prod
| +-- dev
| +-- opt
| +-- shared
|
+-- mysite_b.com
|
+-- prod
+-- dev
+-- stage

Загружаем полученый архив с сайтом на наш хостинг в соответсвующую папку

Если архив создавался для producton сайта, то переходим в папку prod и загружаем архив туда. Если для оптового сайта, то в папку opt. Архив загружаем напрямую со старого сервера, с помощю утилиты scp через ssh:
scp <имя_пользователя>@<ip_или_домен_сайта>:</путь/к/архиву/имя_архива.tar.gz> <имя_архива.tar.gz>
Где, в этой команде:
<имя_пользователя> - пользователь старого хостинга, напрмер, root <ip_или_домен_сайта> - можно указать как доменное имя (mysite.com) или же ip этого сервера </путь/к/архиву/имя_архива.tar.gz> - полный путь к архиву на старом сервере <имя_архива.tar.gz> - имя, под которым архив будет сохранен на текущем сервере
После скачивания архива необходимо убедиться, что его размер на старом сервере и на нашем (в байтах) совпадают, что архив был загружен полностью. Может быть такое, что при скачивании произошла сетевая ошибка, либо же архив может быть не скачан полностью из-за нехватки места на диске.

Распаковываем скачанный архив в нужной папке

Следует обратить внимание, что при распаковке может не хватить места на диске, за этим нужно следить
tar xvzf <имя_архива.tar.gz>
После распаковки, если переносится несколько сайтов, и они оба используют одно и то же ядро, то переносим папки bitrix и upload в папку shared, и создаем на них симаольные ссылки для нужных сайтов. Например, для prod - переходим в папку prod и прописываем следующие команды
cd ~/www/mysite.com/prod
ln -s ../shared/bitrix bitrix
ln -s ../sgared/upload upload
Обратите внимание, что не нужно ставить слеш в конце имени папки

Добавляем домен в панели управления хостингом, выпускаем SSL сертификат

Для этого, авторизуемся в панели управления хостингом (cpanel) под нужным пользователем, в разделе WWW / WWW-домены создаем новый домен. Заполняем вкладку "WWW-домен" по примеру на скриншоте. Указываем имя домена, его папку, IP адреса, создаём SSL сертификат.
Вкладки "Дополнительные возможности" и "Журналы" оставляем как есть. На вкладке "Оптимизация WWW-домена" настраиваем кэширование
Обязательно снять галочку open_basedir. Она нужна для разделения прав доступа к папкам между пользователями на сервере, но она сильно тормозит работу с файловой системой, поэтому отключаем её. Для этого необходимо авторизоваться в cpanel под root пользователем, найти созданный домен и отключить данную галочку.

Создаем нового пользователя базы данных и саму базу данных

Подготовим базу данных, в которую мы вскором будем заливать бэкап со старого хостинга. Под нужным пользователем в cpanel переходим в раздел Главное / Базы данных и нажимаем там "Создать". Заполняем все обязательные поля.
Имя базы данных и имя пользователя должны совпадать. В качестве user указывается имя пользователя на хостинге (profi, pk-tis, starmedia), в качестве sitename указывается название сайта (profi-mag, profi-mag_opt, pechi). Пароль создаем с помощью генератора паролей. Записываем себе временно на листочек имя пользователя и сгенерированный пароль, чтобы в дальнейшем прописать их в настройках сайта.

Редактируем файлы конфигурации

Подготовим конфигурацию сайта к работе. Отредактируем файлы bitrix/php_interface/dbconn.php и bitrix/.settings.php. Укажем новые параметры соединения с базой данных, а так же убеждаемся, что в обоих файлах отключен дебаг $debug = false . Дополнительно, в файле bitrix/.settings.php можно настроить логирование ошибок битрикса в файл

Редактируем .htaccess и настраиваем перенаправления

Перенаправления с HTTP на HTTPS, которые были настроены на старом хостинге, на нашем могут не заработать. Поэтому, можно заранее заменить редиркет на HTTPS на следующую конструкцию:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Так же стоит убедиться, что настроена переадресация с www поддомена на без www

Закрываем доступ к сайту на старом хостинге

Теперь, пришла пора сделать бэкап базы данных со старого хостинга и залить его на наш. Но перед этим необходимо закрыть публичную часть сайта для посетителей, чтобы в базе данных во время переноса не оказалось никаких новых записей.
Для этого, в административной части сайта переходим в Настройки / Настройки продукта / Настройки модулей / Главный модуль
В самом низу его настроек нажимаем на кнопку "закрыть доступ к публичной части"

Создаем бэкап базы данных со старого сервера и копируем его на наш

Заливаем дамп базы

Перенаправляем DNS

http://24whois.ru/?t=nslookup - проверка, применились ли изменения
в консоли (cmd) - nslookup mysite.com
Смена DNS серверов на локальном компе, чтобы обойти кэш провайдеров
ipconfig /flushdns ipconfig /renew

Заходим на сайт и выполняем проверку настроек и редиректов

Не открывая публичную часть проходимся по всем страницам сайта, проверяем, что все нормально работает

Открываем публичную часть