5 февраля 2022
840

Мне нужно перенести сайт на другой хостинг. Нужно сделать это:

  1. С минимальным простоем сайта.
  2. Чтобы посетители не видели ошибок.
  3. Чтобы после переноса не возникло ошибок (например, на старом сайте кто-то сделал заказ, а на новом его нет).

Как это сделать?


Общий план

  1. Подготавливаем сайт на новом сервере (чтобы убедиться, что сайт точно может работать на новом сервере без ошибок, и чтобы в час X осталось сделать только небольшую синхронизацию данных, и это не заняло много времени).
  2. Подготавливаем DNS для быстрого переключения IP.
  3. Подготавливаемся для максимально быстрого выполнения переноса.
  4. Останавливаем всю деятельность на старом сайте (веб-сервер - заглушкой, cron - останавливаем, и т. п.) (чтобы не было изменений данных в процессе переноса).
  5. Проводим финальную синхронизацию данных.
  6. Тестируем новый сайт еще раз.
  7. Перебиваем DNS на новый IP сайта.
  8. Различные действия после переноса (например, настройка cron на новом сайте).

Далее подробно.

1. Подготавливаем сайт на новом сервере

  1. Копируем сайт на новый сервер.
  2. Тестируем его работу.
  3. Все должно работать полностью корректно.

2. Подготавливаем DNS для быстрого переключения IP

Важно. Это инструкция по переносу сайта. А на старом сервере могут работать и другие сервисы, например, почта. В этой инструкции нет ничего про перенос почты. Поэтому нам важно, чтобы сайт перенесся, а все остальное осталось работать как раньше.

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

  1. Определяем, какие DNS-записи отвечают за работу сайта и смотрят на IP старого сервера.
  2. Для них прописываем TTL 300 (это 5 минут). То есть, чтобы после того как мы переключим IP в DNS, все посетители через 5 минут уже шли на новый IP. 2.1. Если это невозможно - смотрим, какой TTL у записей. Исходя из этого составляем прогноз, через какое время после переключения IP посетители начнут идти на новый сайт (это будет влиять на время простоя).

Технически сразу после переключения IP совсем новые посетители будут сразу идти на новый сайт. Но те, которые там уже были, или те, чьи интернет-провайдеры закешировали IP сайта, получат новый IP только когда истечет время хранения записи в кеше. А это время равно TTL.

Поэтому после переключения IP на новый сайт будет идти, условно, 1% посетителей, а на старый (и будут видеть заглушку) - 99%. В течение TTL процент первых будет меняться от 1 к 100.

3. Подготавливаемся для максимально быстрого выполнения переноса

  1. Готовим план со всеми командами, которые нужно будет выполнить в процессе переноса.
  2. Держим под рукой доступы в ПУ DNS.

3.5. Предварительная проверка работы старого сайта

Чтобы после переноса проверить корректность работы сайта, нам нужно узнать, с чем сравнивать, т. е. как работает сайт сейчас.

При переносе сайта на Битрикс:

  1. Делаем Проверку системы.
  2. Ошибки НЕ ИСПРАВЛЯЕМ (наша задача не починить ошибки, а перенести сайт в неизменном виде).
  3. Запоминаем, какие есть ошибки.

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

4. Останавливаем всю деятельность на старом сайте

  1. Ставим заглушку на старый сайт. Можно взять тут.
  2. Останавливаем cron на старом сайте (комментируем все записи)
  3. cron может быть у пользователя сайта (заходим по ssh от пользователя, там crontab -e)
  4. cron может быть у пользователя root (заходим по ssh от root, там crontab -e)
  5. cron может быть системный vim /etc/crontab
  6. cron может быть еще системный в виде файликов тут ls -l /etc/cron.d/
  7. Немножечко ждем, чтобы все процессы cron отработали. Можно наблюдать через ps auwwx | grep php. Правда, cron может запускать и не php, так что аргумент grep зависит от ситуации.

Так мы добьёмся того, что на сайте не будет происходить изменения данных, пока мы его переносим. Например, никто не сделает там заказ или не оставит сообщение обратной связи, которое мы никогда не увидим на новом сайте, так как оно не попало в дамп БД.

5. Проводим финальную синхронизацию данных

  1. Синхронизируем файлы.
  2. Синхронизируем БД.

6. Тестируем новый сайт еще раз

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

Для Битрикса делаем Проверку системы. Убеждаемся, что не появилось новых ошибок (те, которые были до переноса - игнорируем).

7. Перебиваем DNS на новый IP сайта

  1. Идем в ПУ DNS и вписываем новый IP.

8. Различные действия после переноса

Здесь зависит от ситуации. Часто может понадобиться

  1. Запустить cron на новом сервере (проверить, что пути правильные). Это нельзя делать до отключения сайта и финальной синхронизации данных (cron может влиять на данные). Это также нежелательно делать до переключения DNS, чтобы не тратить время. А вот сейчас уже, в спокойном режиме - можно.

Полезные команды в процессе переноса

rsync для бэкапа сайта

Чтобы забэкапить сайт, но не целиком, а выборочно (без upload, без кеша, без bitrix/backup), можно воспользоваться командой rsync, например:

rsync -av --exclude www/bitrix/backup  --exclude www/upload --exclude www/bitrix/cache --exclude www/bitrix/managed_cache --exclude www/bitrix/stack_cache --exclude www/bitrix/html_pages www ~/BACKUP/before-migrate-to-b24/

То есть, мы находимся в папке некоего сайта, здесь лежит папка www, в которой лежит сайт, и мы делаем копию в ~/BACKUP/before-migrate-to-b24/ (там будет создана папка www). (Важно, что у www слеша нет, а у before-migrate-to-b24/ слеш есть). При этом мы исключаем из копирования кеш, композитный кеш, upload и бэкапы.

Позвоните нам!
Личный кабинет
Вам будет доступна история заказов, управление рассылками, свои цены и скидки для постоянных клиентов и прочее.
Ваш логин
Ваш пароль
Работаем для вас с 9:30 до 18:30
Ждем писем!
г. Санкт-Петербург, Краснопутиловская ул., 69