Обновляем Debian 10 до 11 версии (nginx + php + mariadb)

Почему нужно обновляться с 10 до 11 версии?

Во-первых, новое ядро, свежие пакеты, PHP 7.4 из коробки и MariaDB 10.5. А во-вторых, наконец-то certbot версии 1.12 (до этого были непонятные версии 0.xx). Новый certbot позволяет без танцев с бубнами получать бесплатные Wild Card SSL-сертификаты.

Подготовка к обновлению

  1. Проверьте, чтобы можно было подключиться к базе данных под root'ом без пароля:
    # mysql -e 'select version()'
    +---------------------------+
    | version()                 |
    +---------------------------+
    | 10.3.29-MariaDB-0+deb10u1 |
    +---------------------------+
    
    Если доступа нет, то его надо включить.
  2. Сделайте бэкап важных файлов (конфиги, базы данных, сайты).
  3. Проверьте, чтобы все сервисы работали в нормальном режиме и при запуске не выдавали ошибок (перезагрузите сервер и выполните grep -i -e fail -e error -e corrupt /var/log/syslog).
  4. Убедитесь, что вы сможете войти на сервер не через SSH (а к примеру, через VNC в панели управления хостера и пароль root'а, который вы знаете и помните).
  5. Установите screen:
    apt install -y screen
    

Всё это нужно, чтобы снизить вероятность превращения вашего работающего сервера в нерабочую тыкву.

Обновление

Запускаем сессию screen:

screen -R

ВАЖНО! Запускать screen нужно на УДАЛЁННОМ сервере (а то были случаи...)

Обновляем текущие пакеты:

apt update && apt upgrade -y && apt dist-upgrade

При обновлении не должно быть никаких ошибок. Если они есть, устраните их, потом двигайтесь дальше.

Меняем конфиги:

sed -i 's/buster/bullseye/g;s~debian-security.*/updates~debian-security bullseye-security~g' /etc/apt/sources.list /etc/apt/sources.list.d/*.list

Обновляем пакеты:

apt update

Если ошибок нет, обновляем всю систему:

apt upgrade && apt dist-upgrade

Берём чай/кофе/валидол, тонометр и пристально смотрим за процессом обновления. В процессе будут задаваться разные вопросы, внимательно их изучаем и отвечаем.

Финальная перезагрузка:

reboot

Смотрим результат:

$ uname -a
Linux test.anton-pribora.ru 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

Удаляем устаревшие пакеты:

apt autoremove

Проверяем базу данных:

service mysql status

И если вдруг сервер базы данных таинственным образом удалился, хотя раньше был, то ставим его обратно:

apt install mariadb-server

Теперь можно проверять работу всего остального, что было установлено на сервере.

Хорошая статья, мне понравилась. Оставлю отзыв!