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_64
Code 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: focal
Code 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 -d
Code 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] y
Code 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/tcp
Code 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_64
Code 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: jammy
Code 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!
Vous avez un projet WordPress ou WooCommerce en tête? Transformez votre vision en réalité avec mon expertise reconnue.