Serveur: migration d’Ubuntu 20.04 à 22.04 LTS

Aujourd’hui, nous mettons le serveur à jour et passons d’Ubuntu Server 20.04 (Focal Fossa) à la version 22.04 LTS (Jammy Jellyfish).

Chaque nouvelle mise à jour d’Ubuntu en version LTS (Long Time Support) permet de bénéficier des mises à jour de sécurité et de maintenance pendant 5 ans, c’est-à-dire jusqu’en 2027 pour la version Jammy Jellyfish.

Lecture des changements apportés

Je vous conseille fortement de lire le changelog de la version 22.04 pour avoir un aperçu des changements apportés au niveau du kernel, openSSL, certains services.

Sont maintenant disponibles:

  • Apache 2.4.52
  • BIND 9.18
  • Linux kernel v5.15.0-25
  • MySQL 8.0.28
  • NetworkManager 1.36
  • nftables est le backend par défaut pour le parefeu
  • Perl v5.34.0
  • PHP 8.1.2
  • PostgreSQL 14.2
  • Python 3.10.4
  • Ruby 3.0
  • ssh-rsa est maintenant désactivé par défaut dans OpenSSH.

Cela donne aussi une idée des potentielles complications qui pourraient subvenir à la suite de la mise à jour, ainsi que leur remédiation.

Sauvegarde des données du serveur

Je ne vous apprends rien : il va falloir sauvegarder les données importantes du serveur avant de commencer la mise à jour de l’OS.

Pensez-donc au dossier /home et /var/www mais aussi aux fichiers de configuration dans /etc et /root.

Vérification des prérequis

Vérification de la version actuelle

On vérifie notre noyau actuel:

uname -mrs

> Linux 5.4.0-109-generic x86_64Code language: CSS (css)

On vérifie notre version actuelle:

lsb_release -a


No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.4 LTS
Release:	20.04
Codename:	focalCode language: CSS (css)

Mise à jour des paquets de la version actuelle

On met à jour la version actuelle avec les derniers paquets et les derniers noyaux:

apt update && apt upgrade

Redémarrage du serveur

On redémarre le serveur pour appliquer les changements et partir sur une base propre:

shutdown -r now

Ouverture du port 1022 pour SSH

Nous allons procéder à la mise à jour d’Ubuntu Server depuis une connexion SSH, qui pourrait être cassée pendant le temps de la mise à jour: timeout réseau, rupture de la connexion, reboot de la box internet… tout peut arriver.

Nous allons donc ouvrir le port 1022 pour SSH pour pouvoir créer une connexion de secours en cas de soucis:

ufw allow 1022/tcp comment 'Open port ssh tcp port 1022 as failsafe option for upgrades'Code language: JavaScript (javascript)

Cela nous donne:

Rule added
Rule added (v6)

Et on vérifie que la règle est bien présente avec:

ufw status

Lancement de la mise à jour vers Ubuntu Server 22.04

Tout est bon, nous procédons maintenant à l’installation avec:

do-release-upgrade -dCode language: JavaScript (javascript)

Nous sommes dans une session SSH donc nous obtenons ce message d’avertissement:

Reading cache

Checking package manager

Continue running under SSH?

This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because in case of failure it
is harder to recover.

If you continue, an additional ssh daemon will be started at port
'1022'.
Do you want to continue?

Continue [yN] yCode language: PHP (php)

Validez avec y.

Vient ensuite le message qui informe de l’ouverture du port 1022 pour SSH:

Starting additional sshd

To make recovery in case of failure easier, an additional sshd will
be started on port '1022'. If anything goes wrong with the running
ssh you can still connect to the additional one.


To continue please press [ENTER]Code language: JavaScript (javascript)

Nous avons déjà complété cette étape donc validez avec ENTRÉE.

L’installation commence:

Do you want to start the upgrade?


14 installed packages are no longer supported by Canonical. You can
still get support from the community.

5 packages are going to be removed. 95 new packages are going to be
installed. 719 packages are going to be upgraded.

You have to download a total of 631 M. This download will take about
2 minutes with your connection.

Installing the upgrade can take several hours. Once the download has
finished, the process cannot be canceled.Code language: PHP (php)

Lors de l’installation et de la configuration des nouveaux paquets, l’assistant va vous demander à plusieurs reprises si vous souhaitez écraser vos fichiers de configuration : répondez N pour non, autrement certains services ne seront plus configurés.

Après environ 25-30 minutes, nouveau prompt pour les paquets obsolètes:

Remove obsolete packages?


73 packages are going to be removed.

Et enfin, le message qui nous indique que la mise à jour a été effectuée et qu’il faut redémarrer le serveur:

System upgrade is complete.

Restart required

To finish the upgrade, a restart is required.
If you select 'y' the system will be restarted.

Continue [yN] y
Connection closed by remote host.
Connection closed.Code language: PHP (php)

Une fois le serveur redémarré, n’oubliez pas de supprimer la règle qui ouvre le port 1022, nous n’en avons plus besoin:

ufw delete allow 1022/tcpCode language: JavaScript (javascript)

Conclusion

Au reboot, notre serveur tourne maintenant sous Ubuntu Server version 22.04.

Notre kernel est maintenant en 5.15:

uname -mrs

=> Linux 5.15.0-25-generic x86_64Code language: JavaScript (javascript)

et nous sommes bien sous Jammy:

lsb_release -a


No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04 LTS
Release:	22.04
Codename:	jammyCode language: CSS (css)

Notes post-upgrade

Python 2.7 est supprimé pendant la mise à jour donc il faut réinstaller pip ainsi que vos paquets python pour utiliser Python 3.10:

apt install python3-pip
pip install --upgrade pip
pip install --upgrade setuptools

Ensuite on peut réinstaller flexget et subliminal:

pip install flexget subliminal twython

Notez également que la commande python devient python3, sauf si vous installez ce paquet qui fera un lien symbolique vers le nouvel exécutable python:

apt install python-is-python3

Cela vous évitera d’avoir à éditer tous vos scripts et crontabs.

Bonne mise à jour!

Recherchez-vous un expert WordPress ou WooCommerce sur qui vous pouvez compter? Ne cherchez plus.

Faites confiance à mon expertise »

Articles conseillés :

Matt

Matt Biscay est développeur WordPress et WooCommerce certifié chez Codeable, ainsi que sysadmin qualifié et enseignant-chercheur. Passionné par le code performant et les solutions sécurisées, je m'efforce d'offrir une expérience utilisateur exceptionnelle sur chaque projet.

Vous avez aimé cet article ? Vous avez un projet en tête et vous pensez que je pourrais vous aider à le concrétiser ? N'hésitez pas à me contacter, je serais ravi de discuter avec vous de votre projet !

Opinions