Переезд с BitrixVM 7 на 9: как это делается
Седьмая серия BitrixVM собрана на CentOS 7, у которой поддержка закончилась: обновления безопасности для системы больше не выходят. Девятая собрана на системах девятой серии. Вопрос «как обновиться» возникает регулярно, и ответ на него неприятный.
Почему нельзя обновить на месте
Переход между мажорными версиями системы такого рода штатно не выполняется: меняется всё окружение — ядро, пакетный менеджер, версии служб, способ сборки. Поэтому сценарий один: рядом поднимается новая машина девятой серии, на неё переносится сайт, затем переключается домен. Старая машина какое-то время живёт выключенной, но доступной — на случай отката.
Побочный плюс такого пути: переезд проходит без простоя. Сайт работает на старом сервере до момента, когда новый проверен и готов принять трафик.
Что подготовить заранее
- Место под новую машину. Лучше с запасом: на время переезда данные существуют в двух экземплярах.
- Лицензионный ключ продукта. Он понадобится при восстановлении, а ищут его обычно в последний момент.
- Список того, что настроено руками. Задания планировщика, почта, сторонние службы, самописные скрипты, сертификаты. Всё это не переносится вместе с сайтом.
- Свежая резервная копия — и проверка, что она разворачивается. Копия, которую ни разу не восстанавливали, копией не считается.
- Окно для переключения. Для магазина — ночь буднего дня.
Порядок переезда
- Поднять новую машину девятой серии и создать на ней пул через меню окружения. Сайт пока не трогаем.
- Сверить версии. На девятке другие PHP и база данных, и это главный источник неожиданностей. Если сайт жил на PHP 7.x, разбирать поломки лучше заранее: что ломается при переходе на PHP 8.
- Перенести сайт. Либо штатным резервным копированием продукта с восстановлением через
restore.phpна новой машине, либо копированием файлов и дампа базы вручную. Первый способ проще и тянет за собой настройки, второй предсказуемее на больших проектах, где архив получается неподъёмным. - Проверить кодировку базы. На старых проектах часто
utf8mb3, а требуетсяutf8mb4. Это отдельная работа, и делать её лучше на новой машине до запуска: требования к базе и что ломается. - Перенести ручные настройки. Задания планировщика, почта, сертификаты, конфигурации служб. Сертификаты Let's Encrypt проще выпустить заново после переключения домена, чем переносить.
- Проверить сайт по временному адресу — через файл hosts на своей машине, не переключая домен. На этом шаге находится большая часть поломок.
- Переключить домен и следить за журналом ошибок первые часы.
- Оставить старую машину на неделю. Выключенной, но не удалённой.
Что проверить после переключения
- Открываются ли страницы сайта и административная часть.
- Проверка системы в админке: версии, права, настройки PHP.
- Отправка почты — письма с заказов уходят тише всего и ломаются чаще всего.
- Задания планировщика: обмен с 1С, отправка очередей, индексация поиска.
- Оплата и доставка, если это магазин: тестовый заказ целиком.
- Сертификат и редирект на HTTPS.
- Загрузка файлов на диск и в сообщения, если это портал.
Частые поломки при переезде
- Права на файлы после копирования. После переноса rsync'ом владельцем нередко оказывается не тот пользователь, и сайт либо не пишет кеш, либо получает 403 на загрузках.
- Старый код на новом PHP. Девятая серия приносит версию PHP, которой старый код может не ждать. Разбирать это в момент переключения домена — худший вариант.
- Кодировка и сортировка базы. Перенос дампа между разными версиями базы без правки кодировки заканчивается ошибкой на импорте или кракозябрами в данных.
- Забытый планировщик. Сайт работает, а обмен с 1С молчит третьи сутки — потому что задания остались на старой машине.
- Композитный кеш. После переезда его стоит очистить: иначе часть страниц отдаётся из файлов, и проверка показывает не то, что есть на самом деле.
Сколько это занимает
Для небольшого сайта без сложных интеграций — рабочий день с запасом. Для магазина с обменом, платежами и парой сторонних модулей — два-три дня, из которых половина уходит на проверку, а не на сам перенос. Если сайт жил на PHP 7.x, добавьте время на правки кода: объём предсказуем, но нулевым он не бывает.
Общий порядок переноса между серверами, не привязанный к версиям машины, у нас описан отдельно: как перенести сайт на другой сервер.
Частые вопросы
Можно ли обновить BitrixVM 7 до версии 9 без переноса сайта?
Нет. Это переход между мажорными версиями операционной системы, штатного пути для него нет. Поднимается новая машина девятой серии, на неё переносится сайт с базой, затем переключается домен. Старую машину стоит подержать выключенной ещё неделю — на случай отката.
Будет ли простой сайта при переезде?
При правильном порядке — нет. Сайт работает на старой машине, пока новая готовится и проверяется по временному адресу через файл hosts. Простой возможен только на время переключения домена, и он измеряется минутами, если всё проверено заранее.
Что чаще всего ломается после переезда?
Отправка почты, задания планировщика и права на файлы. Почта и планировщик не переносятся вместе с сайтом, их настраивают заново, а про проверку забывают: сайт открывается, значит всё хорошо. Права ломаются после копирования файлов от другого пользователя. Ещё одна частая причина — старый код на новой версии PHP.