Skip to main content

Развёртывание BitrixVM 9.0.9 и миграция сайта на 1С-Битрикс на PHP 8.4

Клиент и контекст проекта

Заказчик — российская компания с корпоративным сайтом на 1С-Битрикс, который эксплуатируется уже несколько лет и нуждался в комплексной модернизации: как серверной инфраструктуры, так и кодовой базы. Сайт стоял на устаревшем окружении, шаблон был написан под старую версию PHP, ядро и модули Битрикса отставали от актуальных релизов. Совокупно это создавало риски как по безопасности (отсутствие обновлений), так и по производительности (старый PHP медленнее, старое окружение не содержит актуальных оптимизаций).

Все работы по развёртыванию новой инфраструктуры, переносу сайта, переписыванию шаблона и обновлению ядра я выполнил лично за 13 календарных дней. Обезличивание: домен сайта, название юрлица, контактные данные и стоимость работ в публичной версии кейса не приводятся. Я базируюсь в Москве и работаю с заказчиками из любого региона РФ, СНГ и за рубежом — в данном случае все работы были выполнены удалённо.

Проблема и задачи

К моменту обращения проект клиента находился в классическом состоянии «накопленного технического долга»: каждая отдельная проблема не была критичной, но их совокупность делала сайт уязвимым и не позволяла развивать функциональность без риска что-то сломать. Задачей было не «латать дыры», а комплексно обновить инфраструктуру и кодовую базу до современного состояния.

Задача 1. Заменить серверную инфраструктуру

Старое окружение не соответствовало актуальным требованиям 1С-Битрикса: отсутствовали преднастройки под современные версии PHP, не было готовой конфигурации кеширования, отсутствовал Redis (который в актуальных версиях Битрикса рекомендуется для session_handler и части кеша). Требовалось развернуть новое окружение на актуальной версии BitrixVM и перенести сайт без потери данных и функциональности.

Задача 2. Перевести шаблон на PHP 8.4

Шаблон сайта был написан под старую версию PHP и содержал конструкции, несовместимые с PHP 8.4. Простое переключение версии PHP на сервере привело бы к фатальным ошибкам на фронтенде. Требовалось переписать шаблон под PHP 8.4 с сохранением всей визуальной части и функциональности — без регрессий для пользователей.

Задача 3. Обновить ядро и модули Битрикса

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

Решение

Работы были организованы в два последовательных этапа. Этап 1 — инфраструктурный: развёртывание нового сервера, настройка окружения, перенос сайта. Этап 2 — кодовая база: переписывание шаблона под PHP 8.4, обновление ядра и модулей. Все работы на обоих этапах я выполнил лично.

Этап 1. Развёртывание новой инфраструктуры (BitrixVM 9.0.9)

  • Развёрнута актуальная версия виртуальной машины BitrixVM 9.0.9 — это официальное окружение от 1С-Битрикс с преднастроенными Nginx, Apache, PHP, MySQL и всеми необходимыми интеграциями.
  • Настроен Memcached — для кеширования компонентов и части сессий Битрикса.
  • Настроен Redis — для session_handler и более быстрого кеша. Двухуровневое кеширование (Memcached + Redis) даёт заметный прирост по сравнению с одним только Memcached, особенно на нагруженных проектах.
  • Создан и настроен пул для нового сайта в интерфейсе BitrixVM: выделены ресурсы, настроены параметры PHP и MySQL под фактический профиль нагрузки проекта.
  • Проведены оптимизации настроек CentOS под используемое оборудование: параметры ядра ОС, лимиты файловых дескрипторов, настройки TCP-стека, swappiness. Это позволяет серверу эффективнее использовать доступные ресурсы.
  • Сайт успешно перенесён на новую инфраструктуру: файловая структура, база данных, конфигурационные файлы. Переключение DNS выполнено без downtime для пользователей.

Этап 2. Переписывание шаблона и обновление кодовой базы

  • Шаблон сайта полностью переписан на PHP 8.4: заменены устаревшие конструкции, удалены deprecated-функции, переписан код, использовавший возможности старых версий PHP.
  • Проведено тестирование на ошибки после переписывания шаблона — ошибки не выявлены. Тестировались все ключевые сценарии: главная страница, каталог, карточки товаров, формы обратной связи, личный кабинет, административная часть.
  • Ядро 1С-Битрикс и все установленные модули обновлены до актуальных версий.
  • Проведено повторное тестирование на ошибки после обновления ядра и модулей — ошибки не выявлены. Это критично: обновление ядра Битрикса иногда затрагивает обратную совместимость с пользовательскими шаблонами, поэтому повторная проверка обязательна.

Результаты

Все работы выполнены за 13 календарных дней. Клиент получил полностью обновлённый проект: современная серверная инфраструктура на BitrixVM 9.0.9, двухуровневое кеширование через Memcached + Redis, актуальная версия PHP 8.4, обновлённое ядро и модули Битрикса. Сайт работает стабильно, ошибок после переписывания шаблона и обновления ядра не выявлено.

 

Показатель Результат
Срок выполнения 13 календарных дней (2 рабочих недели)
Этапов работ 2 (инфраструктура + переписывание шаблона)
Версия BitrixVM 9.0.9 (актуальная на момент работ)
Версия PHP 8.4 (самая свежая на момент работ)
Кеширование Memcached + Redis (двухуровневое)
ОС CentOS (проведена оптимизация под оборудование)
Сайт после миграции стабильно работает, ошибок не выявлено
Перепроверка после обновления ядра/модулей тесты пройдены, ошибок нет

 

Дополнительно клиент получил: готовность к будущему развитию проекта — на свежем стеке можно внедрять новые модули и интеграции без оголовья про «у нас старый PHP, этот модуль не встанет»; улучшенную производительность за счёт PHP 8.4 (в нём заметно ускорены генераторы, JIT и работа с типами) и двухуровневого кеширования; снижение рисков безопасности — все компоненты получают актуальные обновления.

Технологический стек

 1С-Битрикс     BitrixVM 9.0.9     PHP 8.4     CentOS     MySQL     Nginx + Apache     Memcached     Redis     OPCache     Bitrix push-сервер