Миграция с CentOS 7 в 2026: AlmaLinux, Rocky Linux или новый сервер
Инвентаризация, бэкап, ELevate и leapp пошагово, перенос на параллельную машину, что ломается в EL8/EL9 и что проверить после переезда.

Коротко: поддержка CentOS 7 закончилась 30 июня 2024 года, обновлений безопасности для неё больше нет. Переезжать можно двумя путями: обновить систему на месте через AlmaLinux ELevate (CentOS 7 → AlmaLinux 8, дальше 9 и 10) или поднять новый сервер на AlmaLinux, Rocky Linux, Debian или Ubuntu и перенести на него данные. Обновление на месте быстрее, параллельный сервер надёжнее и даёт простой откат. В обоих случаях начинайте с инвентаризации и проверенного бэкапа.
CentOS 7 до сих пор работает на множестве серверов: старые интернет-магазины, внутренние CRM, биллинг, почта, «сервер, который настроил человек, давно ушедший из компании». Пока он работает, переезд откладывают. Но новые уязвимости в ядре, OpenSSL и glibc для него уже не закрываются, официальные зеркала отключены, а свежие версии PHP, Python и баз данных под него просто не собираются.
ОС переезжает относительно предсказуемо. Больше всего времени обычно съедает приложение: код на PHP 5.6 или Python 2 на новой системе не запустится без доработки, и тогда задача уходит от администратора к разработчикам. Если автора проекта уже нет, такую часть работы обычно передают подрядчику, который сопровождает старые веб-проекты, а администратор готовит сервер и план переезда. Ниже разберём, как выбрать целевую систему и способ миграции, какие команды выполнить и что проверить после.
Почему нельзя оставаться на CentOS 7
Сервер без обновлений продолжает работать, пока однажды не перестанет. Вот что копится всё это время:
- Безопасность. Исправления для ядра, OpenSSL 1.0.2, OpenSSH 7.4 и sudo больше не выходят. Любая новая публичная уязвимость остаётся открытой навсегда.
- Репозитории.
mirror.centos.orgотключён,yum installбез правки репозиториев падает с ошибкой. Пакеты остались только в архивеvault.centos.org. - Софт. В базовой системе PHP 5.4, Python 2.7, MariaDB 5.5 и PostgreSQL 9.2. Современные фреймворки, CMS и драйверы баз требуют версий новее, а сторонние репозитории для EL7 один за другим закрываются.
- TLS. OpenSSL 1.0.2 не умеет TLS 1.3, поэтому сервер не пройдёт требования сервисов, которые отключают старые версии протокола.
Платная расширенная поддержка RHEL 7 до 2028 года существует, но она нужна в основном тем, кто сидит на официальной RHEL и связан требованиями вендоров. Для типичного веб-сервера на бесплатном CentOS разумнее переезжать.
Куда переезжать с CentOS 7: сравнение систем
Если на сервере много конфигов, заточенных под Red Hat (пути /etc/httpd, SELinux, firewalld, юниты из RPM), проще остаться в семействе EL. Если вы и так используете Debian на других машинах, переезд на него избавит от двух разных экосистем в парке.
| Система | Поддержка | Миграция с CentOS 7 | Кому подходит |
|---|---|---|---|
| AlmaLinux 8 / 9 / 10 | 8 — до 2029, 9 — до 2032, 10 — до 2035 | На месте через ELevate или на новый сервер | Тем, кто хочет сохранить привычный RHEL-стек |
| Rocky Linux 8 / 9 | 8 — до 2029, 9 — до 2032 | Проект рекомендует чистую установку и перенос данных | Тем, кто готов поднять новый сервер |
| RHEL 8 / 9 | По подписке | Leapp от Red Hat, коммерческая поддержка | Компаниям с требованиями сертификации |
| Debian 13 / Ubuntu 24.04 LTS | Около 5 лет с учётом LTS | Только новый сервер, конфиги переписываются | Тем, у кого остальной парк на Debian-семействе |
Подробнее о различиях дистрибутивов — в статье Как выбрать дистрибутив Linux в 2026. Учтите требования к процессору: AlmaLinux и RHEL 9 требуют набор инструкций x86-64-v2, а RHEL 10 — x86-64-v3. Для очень старого железа у AlmaLinux 10 есть отдельная сборка под v2, но проверить CPU лучше заранее.
Что выбрать: обновление на месте или новый сервер
Короткий ответ: стандартный стек и снапшоты — пробуйте ELevate на клоне; боевой сервис с самосборным софтом — поднимайте новую машину. От этого решения зависят простой, риск и объём ручной работы.
| Критерий | На месте (ELevate) | Новый сервер |
|---|---|---|
| Простой | От 30 минут до нескольких часов, с перезагрузками | Минуты на переключение DNS или IP |
| Откат | Только из снапшота или бэкапа | Вернуть трафик на старый сервер |
| Мусор в системе | Переезжает вместе с системой | Остаётся на старой машине |
| Ручная работа | Меньше: конфиги сохраняются | Больше: всё ставится и настраивается заново |
| Когда выбирать | VPS со снапшотами, стандартный стек, мало сторонних репозиториев | Боевой сервис, где простой дорог, много самосборного софта |
Практическое правило: если у вас есть возможность сделать снапшот всей машины и стек стандартный (Nginx или Apache, PHP из базовых репозиториев, MariaDB), пробуйте ELevate на клоне. Если сервер годами обрастал пакетами из EPEL, remi, самосборными бинарниками в /usr/local и правками в системных файлах, честнее поднять новую машину.
Шаг 1. Инвентаризация: что живёт на сервере
Перед любыми изменениями запишите, что на машине работает. Этот список пригодится и для проверки после переезда:
# версия и ядро
cat /etc/centos-release; uname -r
# подключённые репозитории
yum repolist all
# пакеты не из базовых репозиториев
yum list installed | grep -v -E '@(base|updates|extras|anaconda)'
# включённые службы и открытые порты
systemctl list-unit-files --state=enabled
ss -tlnp
# задания по расписанию
ls /etc/cron.d /etc/cron.daily; for u in $(cut -d: -f1 /etc/passwd); do crontab -l -u $u 2>/dev/null | sed "s/^/$u: /"; done
# что лежит вне пакетов
ls /usr/local/bin /opt
Отдельно выпишите версии языков и баз: php -v, python -V, mysql -V, psql --version. Именно они определят, сколько работы будет с кодом приложения. Для служб, которые вы запускаете своими юнитами, пригодится шпаргалка systemd без боли.
Шаг 2. Бэкап, который точно восстановится
Без проверенной копии миграцию не начинайте. Нужны две вещи:
- Снапшот всей машины у провайдера или в гипервизоре. Это быстрый откат, если обновление на месте сломало загрузку.
- Копия данных вне сервера: дампы баз (
mysqldump --single-transaction,pg_dumpall), каталоги сайтов,/etcцеликом, почта, сертификаты, ключи.
Восстановите дамп на тестовой машине и убедитесь, что приложение открывается. Схема, которая переживает потерю сервера целиком, разобрана в статье Backup-стратегии: правило 3-2-1.
Шаг 3. Как обновить CentOS 7 до AlmaLinux 8 через ELevate
ELevate — проект AlmaLinux на базе фреймворка Leapp от Red Hat. Он умеет обновлять CentOS 7 до AlmaLinux 8, Rocky Linux 8 или Oracle Linux 8. Прыгнуть сразу на 9 нельзя: путь только поэтапный, 7 → 8 → 9 → 10. Сначала прогоните его на клоне сервера, а не на боевой машине.
Минимальные требования перед запуском:
- свежая CentOS 7.9;
- не меньше 4 ГБ RAM;
- 5 ГБ свободного места в корне и
/var; - доступ к консоли провайдера на случай, если сервер не поднимется по SSH;
- сторонние репозитории на время обновления отключены.
# 1. переключить репозитории на архив и обновиться до последней 7.9
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 и данные для 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. проверка без изменений
sudo leapp preupgrade
less /var/log/leapp/leapp-report.txt
Отчёт leapp-report.txt делит находки на информационные и блокирующие (inhibitor). Пока есть хоть одна блокирующая, обновление не запустится. Три самые частые на CentOS 7 закрываются так:
sudo rmmod pata_acpi
echo PermitRootLogin yes | sudo tee -a /etc/ssh/sshd_config
sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True
Строка с PermitRootLogin нужна только для прохождения проверки: в EL8 изменилось значение по умолчанию. Сразу после обновления верните запрет входа под root и вход только по ключам, как в статье SSH-ключи вместо пароля. Когда preupgrade чист, запускайте само обновление:
sudo leapp upgrade
sudo reboot
# после загрузки
cat /etc/redhat-release
rpm -qa | grep el7
Перезагрузка уходит в специальную среду обновления и может занять 20–60 минут. Не прерывайте её. Пакеты с el7 в имени, оставшиеся после обновления, разберите вручную: удалите или замените аналогами из EL8. Полная инструкция с переходом на 9 и 10 — в документации AlmaLinux ELevate.
Шаг 4. Перенос на новый сервер
Если выбрали параллельную машину, порядок такой:
- Поставьте целевую систему, сразу закройте её по базовым правилам из гайда Защита Linux-сервера: база.
- Установите стек из штатных репозиториев новой системы: веб-сервер, нужную версию PHP или Python, базу данных.
- Конфиги сравнивайте построчно, копировать их целиком опасно: старые
httpd.confиmy.cnfрассчитаны на другие версии, и часть директив в новых просто удалена. - Скопируйте файлы через
rsync -aHAX --numeric-ids, базы — дампом и восстановлением, а не копированием каталога данных. - Поднимите приложение, проверьте его по временному домену или через запись в
/etc/hostsна своей машине. - Понизьте TTL DNS-записей за сутки до переезда, сделайте финальную синхронизацию данных и переключите трафик.
Старый сервер не выключайте ещё одну-две недели: это ваш откат и справочник «как было настроено». Общий порядок развёртывания сайта на чистой машине описан в статье Как разместить сайт на VPS.
Что ломается после перехода с EL7 на EL8 и EL9
Система обычно загружается нормально. Ломаются мелочи, которые на CentOS 7 работали «сами»:
- Python 2. В EL8 нет
/usr/bin/pythonпо умолчанию, системный Python — 3.6. Скрипты с шебангом#!/usr/bin/pythonперестанут запускаться. - PHP и базы. PHP приходит модулями AppStream (7.2 и новее), MariaDB — 10.3 и новее. Код под PHP 5.x придётся дорабатывать:
mysql_*-функции и многие расширения удалены. - Сеть. В EL9 старые
network-scripts(файлыifcfg-*) больше не поддерживаются, сетью управляет NetworkManager. Проверьте статические адреса и маршруты. - Время. Пакета
ntpнет, вместо негоchrony. - Файрвол.
firewalldработает поверх nftables. Самописные скрипты сiptablesнужно перепроверить. - Криптография. В EL9 подписи SHA-1 по умолчанию отключены системной политикой. Старые клиенты, ключи и сертификаты могут перестать подключаться.
Чек-лист после миграции
cat /etc/os-releaseпоказывает целевую систему, пакетовel7не осталось.- Все службы из списка инвентаризации запущены,
systemctl --failedпуст. ss -tlnpпоказывает те же порты, что и до переезда, и ничего лишнего наружу.- Сайты и API отвечают, формы и отправка почты работают, задания cron выполняются.
- Сертификаты продлеваются: прогоните
certbot renew --dry-run. - SELinux в режиме
enforcing, в/var/log/audit/audit.logнет массовых отказов. - Бэкапы снова идут по расписанию и восстанавливаются.
- Мониторинг видит сервер и его метрики. Как его настроить — в статье Мониторинг: Prometheus и Grafana.
Частые вопросы о миграции с CentOS 7
Можно ли обновить CentOS 7 сразу до AlmaLinux 9?
Нет. ELevate поддерживает только поэтапный путь: сначала CentOS 7 → AlmaLinux 8, затем 8 → 9 и 9 → 10. Каждый шаг — отдельный прогон leapp preupgrade и leapp upgrade со своими блокирующими проверками. Если нужна сразу 9 или 10, быстрее поднять новый сервер.
Что выбрать: AlmaLinux или Rocky Linux?
Для обновления на месте — AlmaLinux: у неё есть официальный инструмент ELevate. Для чистой установки обе системы почти равноценны: бинарно совместимы с RHEL, сроки поддержки совпадают. Выбирайте ту, которая уже используется в вашем парке или которую поддерживает ваша панель управления.
Сколько длится миграция?
Само обновление ELevate на простом VPS занимает 30–60 минут вместе с перезагрузками. Подготовка, тест на клоне и проверка после занимают от дня до недели в зависимости от количества сайтов и нестандартного софта. Перенос на новый сервер дольше по работе, но короче по простою.
Что делать, если сервер не загрузился после leapp upgrade?
Зайдите через консоль провайдера (VNC или serial), посмотрите /var/log/leapp/leapp-upgrade.log и вывод загрузки. Если быстро починить не удаётся, откатитесь на снапшот, сделанный перед обновлением. Именно поэтому без снапшота обновление на месте не запускают.
Работает ли ELevate с панелями управления?
Зависит от панели. У части панелей есть свои скрипты конвертации, которые вызывают ELevate и заодно обновляют компоненты панели. Перед миграцией проверьте документацию панели и требования к её версии, иначе после обновления ОС она может не запуститься.
Можно ли перейти с CentOS 7 на Ubuntu или Debian на месте?
Нет. Это разные семейства с разными пакетными менеджерами, путями конфигов и политиками безопасности (SELinux против AppArmor). Переход возможен только через новый сервер и перенос данных с переписыванием конфигов.
Нужно ли переписывать приложение?
Если оно работает на PHP 7.2+ или Python 3 и не зависит от старых библиотек — обычно нет, хватает настройки окружения. Если код написан под PHP 5.x, Python 2 или старые расширения, без доработки он на новой системе не запустится. Оцените объём ещё на этапе инвентаризации, чтобы не узнать об этом в день переезда.