Серверное оборудование для бизнеса — надёжные решения для любых задач Подробнее →
Статья

Почему я перевёл все серверы с CentOS на Debian 12

Если вы до сих пор держите серверы на CentOS 7 или 8 — поздравляю, вы живёте в прошлом. CentOS 7 умер в июне 2024, CentOS 8 убили ещё раньше — в конце 2021-го, когда Red Hat переориентировал его на CentOS Stream. А Stream — это уже не стабильный дистрибутив, это rolling-превью RHEL. Использовать это в продакшне — сомнительное удовольствие.

Что было до

У меня под управлением около 40 серверов: веб, базы данных, мониторинг, CI/CD, хранилища. Всё исторически крутилось на CentOS 7. Работало нормально, не трогай — не сломается. Но время вышло.

Варианты на замену я рассматривал три: Debian 12 (Bookworm), Ubuntu 22.04 LTS и Rocky Linux 9. Забегая вперёд — выбрал Debian. Сейчас объясню почему.

Почему не Rocky Linux

Rocky — очевидный преемник CentOS для тех, кто хочет остаться в экосистеме RHEL. Binary-совместимость, те же пакеты, привычный dnf. Соблазн велик, особенно если у вас куча проверенных RPM-скриптов.

Но мне не нравится зависимость от Red Hat. Один раз уже наступили на эти грабли с CentOS. Rocky держится на энтузиазме сообщества, и хотя у проекта есть коммерческая поддержка от CIQ, я не уверен, что через 5 лет ситуация не повторится.

Почему не Ubuntu

Ubuntu — вполне себе взрослый серверный дистрибутив. LTS-версии поддерживаются 5 лет, Canonical не собирается никуда пропадать. Но у Ubuntu есть раздражающие особенности: snap-пакеты в неожиданных местах, netplan вместо нормальных конфигов сети, и вообще чувствуется, что Canonical любит экспериментировать.

Почему Debian

Debian — это скучно. Скучно в хорошем смысле. Никаких сюрпризов, предсказуемый цикл релизов, огромный репозиторий пакетов. Bookworm вышел в 2023 году и будет поддерживаться до 2028-го с LTS до 2033-го. Никакой корпоративной повестки.

Репозиторий backports позволяет получать свежие версии отдельных пакетов без перехода на testing. Это удобно, когда нужен, например, свежий PostgreSQL или Nginx.

Практика миграции

Прямой апгрейд с CentOS на Debian невозможен — разные форматы пакетов, разная структура системы. Только чистая установка.

Мой подход:

# 1. Снимаем список всего установленного на старом сервере
rpm -qa --queryformat '%{NAME}
' | sort > installed_packages.txt

# 2. Экспортируем конфиги (всё, что в /etc)
tar czf etc_backup.tar.gz /etc/

# 3. Делаем дамп баз, если есть
mysqldump --all-databases > all_databases.sql

# 4. Устанавливаем чистый Debian 12, потом восстанавливаем данные

Самые частые грабли при миграции:

  • Сетевые интерфейсы называются иначе. На CentOS был eth0, на Debian будет ens3 или enp2s0. Правьте /etc/network/interfaces.
  • Firewall: на CentOS firewalld, на Debian по умолчанию вообще нет фаервола — ставьте ufw или настраивайте iptables/nftables напрямую.
  • SELinux vs AppArmor: CentOS использует SELinux, Debian — AppArmor. Это разные системы мандатного контроля доступа. Если у вас были кастомные SELinux-политики — придётся переписывать.

apt vs dnf: привыкаем

Базовые операции несложно перемапить в голове:

# Обновить систему
# CentOS: dnf update -y
apt update && apt upgrade -y

# Установить пакет
# CentOS: dnf install nginx
apt install nginx

# Найти пакет
# CentOS: dnf search package
apt search package

# Информация о пакете
# CentOS: dnf info package
apt show package

Один момент, который удивляет переходящих с RPM: в Debian пакеты нередко разделены на основной и -dev. Например, libssl-dev отдельно от libssl. Если что-то не компилируется — скорее всего, нужен -dev вариант.

AppArmor: не надо бояться

AppArmor проще SELinux в управлении. Профили лежат в /etc/apparmor.d/, проверить статус:

aa-status

Если приложение ведёт себя странно — смотрите /var/log/kern.log на предмет apparmor="DENIED". Временно перевести профиль в complain-mode:

aa-complain /etc/apparmor.d/usr.sbin.nginx

Итого

40 серверов мигрировал за два месяца, по выходным. Один сервер завис на этапе восстановления базы — оказалось, несовместимая версия MySQL. Остальные прошли без критических проблем.

Debian оправдал ожидания: стабильный, предсказуемый, хорошо документированный. Никакой корпоративной зависимости. Если вы ещё на CentOS — начинайте планировать миграцию прямо сейчас.

3 Ответа

  1. Полностью согласен насчёт Debian. Держу на нём свои серваки уже лет восемь, ни разу не пожалел. Стабильность реально на уровне.

  1. А как у тебя с AppArmor в итоге получилось? Я пробовала переходить, на nginx профиль постоянно что-то блокировал, пришлось долго разбираться с путями к логам.

  1. Rocky Linux кстати неплохо себя показывает, у нас на нём несколько серверов крутится без проблем. Но про корпоративную зависимость аргумент понятный, риск есть.