Перенос сата на Бітрік

Как перенести сайт на Битриксе на другой хостинг – один из популярных вопросов специалистам техподдержки и поиску Google.

Мы рассмотрим два способа «переезда» сайта на Битрикс и Битрикс24 с одного хостинга на другой. Их в равной степени можно применять и для миграций с виртуального хостинга на VPS или виртуальные машины, а также к переносу Битрикса с сервера на сервер.

Первый способ. Перенос с помощью бэкапа Битрикс

Первый способ – это штатный вариант переноса, предусмотренный как в «1С-Битрикс: Управление сайтом», так и в коробочной версии «Битрикс24».

Алгоритм переноса простой: бэкап создается на исходном хостинге и с помощью специальной ссылки разворачивается на новом. При этом на новом хостинге в корневой директории веб-сервера должен быть залит скрипт восстановления restore.php.

Важно заранее выделить необходимое время для переноса. Сколько времени потребуется — зависит от конкретного проекта. Небольшие сайты в несколько гигабайт потребуют 10-20 минут, а перенос солидных площадок в сотни гигабайт может занять несколько часов.

Давайте рассмотрим перенос по шагам.

Во многих случаях создание резервной копии из панели администрирования Битрикс работает «из коробки», но есть несколько нюансов.

  • Шаг 1 (необязательный). Перед переносом рекомендуется закрыть публичную часть сайта. Либо спланировать перенос на время низкого трафика – ночью или на выходных. Закрытие позволит снизить нагрузку на сайт, поскольку процедура создания бэкапа весьма ресурсоемкая, а сами резервные копии будут содержать все актуальные данные. Однако это необязательное условие. Если вам важна бесперебойная работа сайта, этот процесс можно сделать и без закрытия публичной части. Закрыть публичную часть можно в «Главном модуле» (<site>/bitrix/admin/settings.php?lang=ru&mid=main&mid_menu=1):

  • Шаг 2. Начинаем создавать резервную копию. Для этого необходимо следовать пути: Настройки -> Инструменты -> Резервное копирование -> Создание резервной копии (<site>/bitrix/admin/dump.php).

Доступно два варианта размещения резервной копии:

  1. В облаке «1С-Битрикс» - копия все равно сначала создается в папке сайта, а после этого копируется в облако и затем удаляется локально;

  2. В папке сайта.

Важный момент: перед созданием рекомендуется убедиться, что на сервере достаточно свободного места для резервной копии. Сделать это можно в панели управления хостинга или на сервере в консоли

  • Шаг 3. Вкладка «Параметры» позволяет использовать гибкие настройки для создания копии:

Из архива рекомендуется исключить следующие файлы: По желанию можно исключить и папку /upload, в которой хранятся картинки и документы, если она большого объема, и перенести ее позже отдельно.

  • Шаг 4. После настроек необходимо нажать кнопку «Создать резервную копию» и дождаться завершения операции. Нюансы данного способа резервного копирования:

    1. Дамп БД и ее архивация создают большую нагрузку на сервер, сайт замедлит свою работу во время резервного копирования. Если сервер слабый, то возможны ошибки 502 и 504. В таких случаях нужно использовать другой способ переноса сайта.

    2. Если сайт большого объема (сотни Гб), то использование встроенного резервного копирования – не лучшее решение для бэкапа. Особенно это актуально, если необходимо обеспечить минимальное время простоя.

  • Шаг 5. После того, как резервная копия будет создана, перейдите в «Список резервных копий» и из выпадающего списка выберите «Получить ссылку для переноса». Скопируйте ее.

Восстановление резервной копии на новом хостинге

  • Шаг 1. Перед восстановлением резервной копии на другом хостинге или сервере мы рекомендуем протестировать их на соответствие с рекомендуемыми настройками для CMS Битрикс. Сделать это можно с помощью скрипта bitrix_server_test.php (описание на сайте Битрикс). Для этого скачайте его по ссылке, положите в корневую директорию сайта на новом хостинге и запустите в браузере http://ваш_домен_или_ip/bitrix_server_test.php.

  • Шаг 2. После того как вы убедились в соответствии системы рекомендуемым настройкам, можно приступать к восстановлению резервной копии. Для этого скачайте файл restore.php по ссылке в корневую директорию сайта и перейдите по ссылке http://ваш_домен_или_ip/restore.php.

  • Шаг 3. После этого следуйте указанию мастера восстановления, выберите «Скачать резервную копию с дальнего сайта» и вставьте ссылку, полученную ранее.

Второй способ. Перенос с помощью rsync и mysqldump

Перенос автоматическими средствами, что мы рассмотрели выше, – это алгоритм, на который почти невозможно повлиять. И если по каким-то причинам в ходе его работы не происходит создание или восстановление данных, то на помощь приходит второй способ.

Он подойдет тем, кто имеет доступ к shell-консоли и обладает навыками системного администрирования. Его также логично будет использовать при больших объемах сайтов, наличии множества мелких файлов, отсутствии места на сервере или медлительности исходного хостинга.

Перенос с помощью rsync и mysqldump характеризуется:

  1. Большим контролем и гибкими возможностями для переноса. Синхронизация файлов происходит вручную, ошибки можно попутно замечать и исправлять.

  2. Минимальным временем простоя сайта и возможностью досинхронизировать файлы. Нет ограничений и по таймингу, когда тайм-ауты веб-серверов ограничивают соединение или выполнение переноса временными рамками.

  3. Снижением нагрузки на сервер. Когда Битрикс делает резервные копии, он формирует многотомный архив, в котором для больших сайтов может быть больше сотни томов. При ручном переносе создается один большой архив, который легче контролировать.

Итак, приступим к переносу.

  • Шаг 1. Большинство CMS состоит из файлов и базы данных. С помощью утилиты rsync мы перенесем файлы, а с помощью утилиты mysqldump – перенесем базу. Начнем с переноса файлов: для этого запустите rsync для корневой директории сайта с сервера-источника на сервер-получатель.

[root@server1 ~]# rsync -avz корневая_директория_сайта/root@ip_сервера_получателя:/home/bitrix/www/

// пример
rsync -avz /home/bitrix/ root@<IP_НовогоСайта>:/home/bitrix/

Если подключение к получателю уже ранее производилось, нужно сначала очистить информацию про ключ с помощью команды:

ssh-keygen -R <АдресНовогоСервера>

После переноса всегда можно досинхронизировать файлы, запустив эту команду снова. Копируются только изменения.

  • Шаг 2. Затем сделаем дамп базы с помощью утилиты mysqldump:

mysqldump --no-tablespaces -u имя_пользователя -p sitemanager > ИМЯ_БАЗЫ.sql

И скопируем дамп через тот же rsync

rsync -avz ИМЯ_БАЗЫ.sql root@ip_сервера_получателя:/home/bitrix/

Примечание Не делайте и не копируйте дамп базы.sql в корневую директорию сайта, так как к ней могут получить доступ другие пользователи.

  • Шаг 3. После того, перед импортом данных, необходимо создать базу на новом сервере

mysql -u имя_пользователя -p
mysql > create database ИМЯ_БАЗЫ;
mysql > exit;

Параметры подключения к новой базе можно узнать тут:/root/.my.cnf.

И далее выполните ее импорт:

mysql -u имя_пользователя -p ИМЯ_БАЗЫ < /ПутьКБазе/ИМЯ_БАЗЫ.sql
  • Шаг 4. После этого проверьте и при необходимости измените настройки подключения к базе данных в файлах bitrix/.settings.php и bitrix/php_interface/dbconn.php. В заключение – проверьте работу сайта.

Как проверить систему после переноса

После восстановления следует перейти на сайт, зайти в панель администратора и выполнить проверку системы, чтобы убедится в корректности ее работы. Необходимо следовать пути: Рабочий стол -> Настройки -> Инструменты -> Проверка системы.

И уже после восстановления резервной копии можно выполнять изменения в DNS, чтобы переключить домен на новый сервер.

Возможные проблемы и ошибки

ПРОБЛЕМЫ ИЗ-ЗА ВЕРСИЙ PHP И MYSQL

Если на исходном сайте были устаревшие версии php/mysql, а на новом – они уже актуальные, то эта проблема может возникать. Если это произойдёт, обратитесь к разработчикам сайта, приведут код к соответствию новым версиям php/mysql. Кроме того, нужно убедиться, что установлены все обновления Битрикс. Для этого надо сначала обновить php/mysql (даже на старом хостинге), а затем установить обновления Битрикс.

ПРОБЛЕМЫ С РАБОТОЙ СТАРЫХ ПРАВИЛ/РЕДИРЕКТОВ .HTACCESS

После переноса файл .htaccess из резервной копии сохраняется под именем .htaccess.restore, а новый файл .htaccess содержит правила по умолчанию. Можно переименовать старый файл или перенести из него необходимые правила в новый.

ПРОБЛЕМЫ С ОТПРАВКОЙ ПОЧТЫ С СЕРВЕРА

Для отправки почты в CMS Битрикс используется php функция mail(). Следует через phpinfo() проверить, что параметр sendmail_path указывает путь до sendmail или на его заменитель. Выявлению большинства проблем с отправкой писем помогает лог почтового сервера, по умолчанию это файл /var/log/maillog. В шаблоне BitrixVM для отправки почты уже всё настроено, и останется лишь задать имя отправителя “from” в файле /home/bitrix/.msmtprc

ПРОБЛЕМЫ С АВТОРИЗАЦИЕЙ ПОЛЬЗОВАТЕЛЯ

Если пропадает авторизация пользователя, то можно проверить хостинг/сервер на корректность работы сессий с помощью скрипта bitrix_server_test.php по ссылке.

ПРОБЛЕМЫ С ИМПОРТОМ БАЗЫ ДАННЫХ

При возникновении сложностей с импортом базы данных объемом более 1 Гб, операцию следует проводить через консоль (инструкция есть в блоге MediaGuru).

ОШИБКИ С ПОЯВЛЕНИЕМ БЕЛОГО ЭКРАНА

Бывают случаи, когда после переноса появляется белый экран, который сигнализирует об ошибках. Чтобы понять, чем конкретно это вызвано, следует в файле bitrix/php_interface/dbconn.php включить логирование ошибок: 'exception_handling' => array ( 'value' => array ( 'debug' => true, 'handled_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE, 'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_USER_WARNING & ~E_USER_NOTICE & ~E_COMPILE_WARNING & ~E_DEPRECATED, 'ignore_silence' => false, 'assertion_throws_exception' => true, 'assertion_error_type' => 256, 'log' => array ( 'settings' => array ( 'file' => 'bitrix/modules/error.log', //Файл лога, куда и будут писаться наши ошибки 'log_size' => 1000000, ), ), ), 'readonly' => false, ),

ОШИБКИ «MYSQL CONNECT ERROR» И «DB QUERY ERROR. PLEASE TRY LATER»

В первом случае следует проверить правильность доступов к БД в файле bitrix/php_interface/dbconn.php и bitrix/.settings.php, а для решения второй ошибки в файле bitrix/php_interface/dbconn.php выставить значение $DBDebug = true, чтобы увидеть детально возникшую ошибку. Другие проблемы и варианты их решения описаны на сайте Битрикс.

Last updated