Битрикс на CentOS 7

Коробочный Битрикс24 на CentOS 7: чем грозит EOL и как мигрировать

Коробочный Битрикс24 на CentOS 7 остался без обновлений безопасности: дистрибутив достиг End of Life летом 2024 года, и патчи для ядра, OpenSSL и системных библиотек больше не выходят. То же касается «1С-Битрикс: Управление сайтом» — серверный стек у них общий, и миграция идёт одинаково. Прямой миграции с CentOS 7 на AlmaLinux штатной утилитой нет — переходят либо поэтапно через ELevate (7 → 8 → 9), либо чистой установкой AlmaLinux 9 с переносом данных. Ниже — как подготовиться, какой путь выбрать и что проверить после миграции.

Миграция сервера Битрикс с CentOS 7 на AlmaLinux 9

Официальный инструмент миграции AlmaLinux не поддерживает CentOS 7, поэтому безопасный переход требует предварительного обновления до EL8 или полной переустановки системы с переносом данных.

Содержание

Почему CentOS 7 опасен для коробочного Битрикса

Коробочный Битрикс24 на CentOS 7 — это связка, которая после окончания поддержки дистрибутива перестала получать обновления безопасности: ядро, glibc, OpenSSL и системные пакеты застыли на версиях, для которых уже не выходят патчи. CentOS 7 достиг End of Life, и для рабочего портала это значит, что любая новая уязвимость в системных библиотеках остаётся открытой на сервере неопределённо долго.

Главная проблема не в самом Битрикс24, а в фундаменте под ним. Портал можно обновлять штатными средствами, но если базовая ОС не получает обновлений OpenSSL и ядра, то TLS-стек, на котором держится HTTPS портала, и сетевой стек остаются с известными дырами. По нашему опыту админы часто закрывают на это глаза, потому что «портал работает» — а работающий портал и защищённый портал это разные состояния.

Второй фактор — деградация совместимости. Свежие версии PHP, нужные новым редакциям Битрикс24, на CentOS 7 ставятся только из сторонних репозиториев и обрастают конфликтами зависимостей. Мы сталкивались с ситуацией, когда обновление модуля композитного кэша требовало версию PHP, которую штатными средствами CentOS 7 уже не собрать без ручной пересборки RPM.

Не делайте ставку на «доживём как-нибудь» — мы видели, как на одном из проектов сервер с EOL-системой попал под автоматизированное сканирование и эксплуатацию уязвимости в устаревшем системном демоне, после чего восстановление из бэкапа заняло почти сутки простоя корпоративного портала. EOL это не абстрактный риск в будущем, а конкретное окно, через которое заходят.

И наконец, официальный инструмент конвертации AlmaLinux поддерживает перевод CentOS 8, но CentOS 7 в списке исходных систем не значится. Это сразу определяет стратегию: прямой одношаговой миграции «Битрикс24 на CentOS 7 → AlmaLinux» штатной утилитой не существует, и решать задачу придётся либо поэтапным апгрейдом, либо чистой установкой.

Но первый практический шаг — формально подтвердить, что вы действительно на CentOS 7 и ветка достигла EOL. Это пара команд ниже:

Устаревший сервер на CentOS 7 без обновлений безопасности
				
					# Проверьте текущую версию и подтвердите EOL-статус системы
cat /etc/centos-release
rpm -q centos-release
# CentOS Linux release 7.9.2009 (Core) — поддержка ветки 7 завершена летом 2024
				
			

Подготовка к миграции: бэкап и проверка совместимости

Перед любым сценарием проверяем раздел /boot: AlmaLinux устанавливает новое ядро рядом с существующими, не заменяя их, и раздела в 512 МБ хватает, чтобы вместить три версии ядра. Если у вас /boot меньше, расчистите его заранее, иначе установка ядра прервётся на середине.

Дальше — инвентаризация окружения. Выписываем текущую версию PHP, набор расширений (php -m), версию MySQL/MariaDB, кастомные параметры в bitrix/.settings.php и нестандартные пути. Битрикс24 чувствителен к окружению: модуль «Push and Pull», composite-кэш и фоновые агенты завязаны на конкретные службы, и если что-то из этого не перенести, портал поднимется, но часть функционала отвалится молча.

Отдельно проверяем требование к версии при поэтапном пути. Минимально поддерживаемая версия EL8 для конвертации — 8.4, и системы с более ранней версией нужно сначала обновить. Если идёте через промежуточный апгрейд до восьмёрки, нельзя останавливаться на первой попавшейся минорной версии — доведите её как минимум до 8.4.

Не пропускайте прогон проверки совместимости в админке Битрикс24 (check_security и phpinfo через панель). Мы однажды получили обратную связь, что после миграции «пропали изображения» — корнем оказалось расширение gd, которое в новом окружении собралось без поддержки нужного формата. Полчаса проверки расширений до миграции экономят полдня разбирательств после неё.

И главное — полный бэкап, с которого реально восстановиться, на трёх уровнях: дамп базы, файлы проекта и системные конфиги; дополнительно снимаем снапшот ВМ целиком как точку отката. Команды для трёхуровневого бэкапа — ниже.

Резервное копирование и проверка совместимости перед миграцией Битрикса
				
					# Дамп БД Битрикса
mysqldump --single-transaction --routines --triggers \
  -u bitrix0 -p sitemanager > /backup/bitrix_$(date +%F).sql

# Файлы проекта и ключевые системные конфиги
tar czf /backup/bitrix_files_$(date +%F).tar.gz /home/bitrix/www
tar czf /backup/etc_$(date +%F).tar.gz \
  /etc/nginx /etc/php-fpm.d /etc/my.cnf.d /etc/crontab
				
			

Сценарии миграции: ELevate поэтапно (7→8→9) vs чистая установка AlmaLinux 9

Для Битрикс24 на CentOS 7 есть два рабочих пути: поэтапный in-place апгрейд через ELevate и чистая установка AlmaLinux 9 с переносом данных. Выбор зависит от того, насколько «замусорена» система и есть ли куда переехать.

ELevate (на базе Leapp) рассчитан на одношаговые переходы между соседними мажорными версиями, поэтому путь до девятки разбивается на ступени: CentOS 7 → AlmaLinux 8 → AlmaLinux 9. Перепрыгнуть сразу нельзя.

Важный нюанс: официальный скрипт almalinux-deploy.sh к этому пути отношения не имеет — он конвертирует уже работающие системы EL8/EL9 (CentOS Stream, RHEL, Rocky, Oracle) в AlmaLinux той же версии и CentOS 7 как источник не поддерживает. Для семёрки рабочий in-place инструмент — именно ELevate.

Второй путь — чистая установка AlmaLinux 9 на новый сервер и перенос проекта из бэкапа. По нашему опыту для коробочного Битрикс24 это чаще предпочтительнее: окружение без накопленного за годы мусора, свежий PHP и MySQL под новую редакцию, а старый сервер остаётся нетронутым как точка отката. Поэтапный ELevate-путь оправдан, когда сервер физический, переезд на новое железо невозможен, а простой нужно свести к минимуму.

КритерийELevate 7→8→9 (in-place)Чистая установка AlmaLinux 9
ПростойМинимальный, на местеЗависит от переноса данных
Риск накопленных конфликтовВысокий, тянется legacyНизкий, окружение с нуля
Точка откатаСнапшот того же сервераСтарый сервер целиком жив
СложностьДва перехода подрядОдин перенос данных
Когда выбиратьНельзя сменить железоЕсть второй сервер/ВМ

Два важных предупреждения для ELevate-пути. Первое: не запускайте in-place сразу на боевом сервере без снапшота — двойной переход 7→8→9 на нагруженной машине может оставить несовместимый набор пакетов в AppStream, поэтому сначала прогоните маршрут на копии ВМ. Второе: для air-gapped-серверов без выхода в интернет потребуется локальное зеркало — не менее 500 ГБ на каждую мажорную версию, синхронизируемое по rsync.

Если идёте по пути ELevate, сама миграция CentOS 7 → AlmaLinux 8 укладывается в несколько команд; обязателен консольный доступ (KVM/IPMI или консоль гипервизора) — во время конвертации по SSH машину уже не достать:

				
					# 1. Переключить репозитории CentOS 7 на зеркало AlmaLinux и обновиться
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://el7.repo.almalinux.org/centos/CentOS-Base.repo
sudo yum upgrade -y
sudo reboot

# 2. Установить elevate-release и leapp-данные AlmaLinux
sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm
sudo yum install -y leapp-upgrade leapp-data-almalinux

# 3. Проверка совместимости и сам апгрейд CentOS 7 -> AlmaLinux 8
sudo leapp preupgrade
sudo leapp upgrade
sudo reboot

# 4. Тот же цикл leapp повторить для перехода AlmaLinux 8 -> 9
				
			

Перенос настроек Битрикса: nginx ЧПУ, php-fpm, cron, push

После того как AlmaLinux 9 поднят, переносим четыре группы настроек, без которых коробочный Битрикс24 работает некорректно: правила ЧПУ в nginx, пул php-fpm, фоновые задачи cron и службу push. Просто скопировать старые конфиги с CentOS 7 не получится — пути к сокетам и имена сервисов в девятке отличаются.

Пул php-fpm под Битрикс24 выносим в отдельный файл, чтобы лимиты портала (число процессов, память, время выполнения) не конфликтовали с другими сайтами на сервере. Ключевой момент — путь к сокету: на AlmaLinux 9 php-fpm по умолчанию живёт в /run/php-fpm/, а не там, где он лежал на семёрке. Именно расхождение этого пути со старым конфигом чаще всего даёт «502 Bad Gateway» сразу после переноса.

Фоновые агенты Битрикс24 запускаются из cron — без них перестают рассылаться письма, чиститься кэш и отрабатывать отложенные задачи. Переносим строку запуска cron_events.php из старого crontab и обязательно проверяем, что она работает от пользователя bitrix, а не root. На наших проектах забытый cron — самая частая причина жалоб вида «перестали приходить уведомления о задачах» через пару дней после миграции.

Служба push-сервера (модуль «Push and Pull») требует отдельной проверки: переносим конфиг nginx-push-stream или ноды push-сервера и убеждаемся, что нужный порт слушается — полный перечень портов и служб мы разбирали в обзоре портов и сервисов коробочного Битрикс24. Если push не поднять, чат и счётчики в админке будут висеть без обновления в реальном времени.

И отдельный момент по безопасности самого nginx: уязвимость Nginx Rift мы подробно разбирали в отдельном материале — при настройке нового сервера сразу сверьтесь с тем разбором, чтобы не перенести проблему на свежую систему.

Само ЧПУ Битрикс24 держится на проксировании всех несуществующих путей в bitrix/urlrewrite.php, а PHP обрабатывается через сокет php-fpm. Базовая конфигурация nginx для AlmaLinux 9 выглядит так:

				
					# ЧПУ Битрикса: несуществующие пути уходят в urlrewrite.php
location / {
    try_files $uri $uri/ @bitrix;
}
location @bitrix {
    rewrite ^(.*)$ /bitrix/urlrewrite.php last;
}

# Обработка PHP через сокет php-fpm (на AlmaLinux 9 — /run/php-fpm/)
location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass   unix:/run/php-fpm/bitrix.sock;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
				
			

Постпроверка и risk-чеклист

После миграции Битрикс24 с CentOS 7 нужно убедиться, что система реально работает на AlmaLinux и все сервисы поднялись, а не остались в промежуточном состоянии.

Проверяем сам портал через встроенные инструменты Битрикс24: запускаем проверку системы в админке (Настройки → Проверка системы), смотрим, что все модули видят зависимости, и прогоняем тест производительности — он сразу покажет, если PHP или БД сконфигурированы хуже, чем на старом сервере. По нашему опыту первый прогон после миграции почти всегда подсвечивает одно-два расширения PHP, которые забыли поставить.

Отдельно проверяем то, что не видно с главной страницы: отправку почты (тестовое письмо через Bitrix\Main\Mail), отработку cron-агентов (запись agent в логах), работу composite-кэша и живость push-службы. Это ровно те вещи, которые поднимаются молча и так же молча отваливаются.

Risk-чеклист, который мы проходим перед тем, как объявить миграцию завершённой:

  • Бэкап и снапшот старого сервера сохранены и доступны как точка отката.
  • Раздел /boot не переполнен — есть место под обновления ядра.
  • ЧПУ, php-fpm-сокет, cron-агенты и push проверены вручную.
  • HTTPS отдаёт валидный сертификат, нет 502 на динамике.
  • Отправка почты и фоновые задачи реально отрабатывают.

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

И самая базовая техническая проверка — что система действительно загрузилась с ядром AlmaLinux, а не со старым. Достаточно двух команд: cat /etc/redhat-release покажет релиз, а grubby --info DEFAULT — ядро по умолчанию. Если вторая ничего не вернула по AlmaLinux — активно старое ядро, и с загрузчиком надо разобраться до боевого трафика:

				
					cat /etc/redhat-release
# AlmaLinux release 9.x

sudo grubby --info DEFAULT | grep AlmaLinux
				
			

Итог

Часто задаваемые вопросы

Ответы на часто задаваемые вопросы по теме статьи.

Не одним шагом. ELevate на базе Leapp делает поэтапный in-place переход между соседними версиями: сначала CentOS 7 → AlmaLinux 8, затем AlmaLinux 8 → 9. Скрипт almalinux-deploy.sh для CentOS 7 не подходит — он конвертирует уже работающие системы EL8/EL9 в AlmaLinux той же версии. Альтернатива поэтапному апгрейду — чистая установка AlmaLinux 9 с переносом файлов и базы Битрикс24.
Раздел /boot должен иметь размер не менее 512 МБ. Это пространство необходимо для хранения трех версий ядра одновременно, так как новое ядро AlmaLinux устанавливается параллельно со старым, а не заменяет его сразу.
Для миграции изолированных систем (air-gapped) рекомендуется выделять минимум 500 ГБ дискового пространства на каждую мажорную версию ОС. Это обеспечивает полное зеркало пакетов для автономного обновления.

Константин Тютюнник — ведущий системный инженер IT For Prof. Специализируется на сопровождении коробочного Битрикс24 и миграции legacy-инфраструктуры на современные дистрибутивы Linux. Более 10 лет опыта в администрировании веб-серверов и обеспечении безопасности корпоративных порталов.

Не рискуйте работоспособностью портала на устаревшей ОС. Инженеры IT For Prof проведут миграцию и сопровождение сервера Битрикс24 под ключ — с полным бэкапом, переносом всех настроек и без простоя.