Mise à jour d’un serveur Kimsufi (OVH) depuis Debian 9 (Stretch) vers Debian 10 (Buster)

Il faut régulièrement penser à mettre à jour son serveur Kimsufi.

Je vais essayer d’expliquer brièvement les étapes à suivre pour cela.

  1. On va effectuer une mise à jour des paquets avec apt-get update && apt-get upgrade
  2. Il peut être intéressant de vérifier la version de son kernel afin d’avoir la dernière recommandée. On va vérifier la version actuelle avec uname -r qu’on peut comparer sur https://tracker.debian.org/pkg/linux. Si on a un noyau OVH, il est recommandé de passer sur une version classique (voir cette discussion). Ensuite, on fait:
    apt-get install linux-image-amd64
    update-grub
    reboot
    

    Après le redémarrage, on peut vérifier la version du kernel avec uname -r

  3. Si vous avez une version personnalisée de MariaDB, vous pouvez vérifier que vous avez la dernière mise à jour pour Stretch
  4. On va sauvegarder les données :
    mkdir /root/svg_special; cp -R /var/lib/dpkg /root/svg_special/; cp /var/lib/apt/extended_states /root/svg_special/; dpkg --get-selections "*" > /root/svg_special/dpkg_get_selection; cp -R /etc /root/svg_special/etc
  5. Ensuite il est conseillé d’utiliser screen pour pouvoir se reconnecter (avec screen -r) à en cas de déconnexion :
    screen
  6. Le processus de mise à niveau décrit sur le site de Debian a été conçu pour des mises à niveau des systèmes « purs » sans paquet provenant d’autres sources. Pour une meilleure fiabilité du processus de mise à niveau, vous pouvez supprimer ces paquets du système avant de commencer la mise à niveau :
    aptitude search '~i(!~ODebian)'
  7. On peut éventuellement purger les vieux paquets obsolètes. Pour cela on va d’abord les lister, puis on peut les purger si tout semble bon:
    aptitude search '~o'
    aptitude purge '~o'
  8. On peut lancer la commande dpkg --audit pour s’assurer que tout est bon avant la migration. On peut également taper dpkg --get-selections "*" | more et vérifier qu’aucun paquet n’est en on hold
  9. Maintenant il faut remplacer tous les « stretch » de /etc/apt/sources.list par des « buster » (on pourra par exemple utiliser sed -i 's/stretch/buster/g' /etc/apt/sources.list), ce qui va donner chez moi :
    deb http://ftp.fr.debian.org/debian buster main non-free
    
    deb http://debian.mirrors.ovh.net/debian/ buster main
    deb-src http://debian.mirrors.ovh.net/debian/ buster main
    
    deb http://security.debian.org/ buster/updates main
    deb-src http://security.debian.org/ buster/updates main
    
    deb http://ftp.debian.org/debian buster-backports main
    
    deb http://debian.mirrors.ovh.net/debian buster-updates main
    deb-src http://debian.mirrors.ovh.net/debian buster-updates main
    

    On vérifiera aussi les autres fichiers qui peuvent se trouver dans /etc/apt/sources.list.d, en modifiant par exemple la source pour MariaDB.

  10. Il est recommandé d’utiliser le programme /usr/bin/script pour enregistrer une transcription de la session de mise à niveau. Ainsi, quand un problème survient, on a un enregistrement de ce qui s’est passé. Pour démarrer un enregistrement, taper :
    script -t 2>~/upgrade-stretch.time -a ~/upgrade-stretch.script
  11. On passe aux choses sérieuses, en commençant par mettre à jour les listes des paquets :
    apt-get update
  12. On va vérifier qu’on a la place suffisante (un message explicite apparait sinon) :
    apt -o APT::Get::Trivial-Only=true full-upgrade
  13. On va maintenant faire une mise à jour minimale :
    apt-get upgrade
  14. Et à partir de là le système va vous questionner… en général choisir l’option par défaut si vous ne savez pas quoi répondre
  15. Puis on continue avec
    apt full-upgrade

Cette dernière étape va durer un certain temps. Une fois terminé, vous pouvez redémarrer le serveur pour s’assurer que tout va bien.

Il est bien de vérifier que la version actuelle de PHP est correctement utilisée par Apache. Pour cela on vérifie la version avec:

php -v

Ensuite on regarde les versions de PHP disponibles dans les modules d’Apache :

ls -l /etc/apache2/mods-available/php*

Et on regarde celle activée :

ls -l /etc/apache2/mods-enabled/php*

Si la version ne correspond pas, alors on désactive la version actuellement gérée par Apache2 puis on active la dernière. Par exemple de PHP 7.0 à PHP 7.4 :

a2dismod php7.0
a2enmod php7.4

Et on redémarre Apache :

systemctl restart apache2

Il pourrait aussi être nécessaire d’installer php7.4-mysql :

apt-get install php7.4-mysql

Dans mon cas j’ai un serveur qui utilise Tomcat8 avec une vieille version de Java (« 1.8.0_265 ») contre la 1.11 qui a été installé pendant la mise à jour (on le voit avec java -v). La 1.8 n’est pas disponible pour Duster, donc j’ai suivi ces conseils :

apt-get update
apt-get install software-properties-common

Puis dans /etc/apt/sources.list.d/jdk8.list j’ai mis :
deb http://security.debian.org/debian-security stretch/updates main
Et ensuite :

apt-get update
apt-get install openjdk-8-jdk

Ensuite il faut modifier $JAVA_HOME… Pour cela on modifier d’abord /etc/environment en y mettant JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ ainsi que /etc/default/tomcat8

Des erreurs sur PHPMyAdmin peuvent survenir dû au passage à PHP 7.4. Il est recommandé de mettre à jour PHPMyAdmin. On va d’abord vérifier qu’on a une source buster-backports dans /etc/apt/sources.list. Dans mon cas j’ai pu mettre à jour comme cela :

apt-get upgrade php-tcpdf php-twig
apt-get install -t buster-backports php-twig
apt-get install phpmyadmin


Une fois les erreurs corrigées, on va nettoyer tous les paquets avec :
apt-get autoremove

On arrête screen en faisant CTRL + A puis k.

2 avis sur “Mise à jour d’un serveur Kimsufi (OVH) depuis Debian 9 (Stretch) vers Debian 10 (Buster)

  1. L

    Merci beaucoup, ce tuto m’a permis de mettre à jour mon serveur sans encombre (super de pouvoir enregistrer l’installation), et de régler quelques soucis ensuite (php). Merci !

  2. SuperCed

    Merci, le tuto m’a bien servit! J’ai une nouvelle LTS fonctionnelle pour au moins 2 ans!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*