Hier soir, j’ai mis à jour le serveur : nous passons de Debian 7.8 (wheezy) à 8.0 (jessie).
Tout s’est plutôt bien passé, il y a eu environ 10 minutes de downtime, le temps que je comprenne ce qui avait changé, notamment dans la configuration Apache et celle de Postfix.
Voici un petit compte-rendu de la mise à jour.
Mise à jour des dépôts
On édite notre fichier source APT :
nano /etc/apt/sources.list
Code language: PHP (php)
et on remplace toutes les occurences de wheezy par jessie.
Chez moi, cela donne :
# DEBIAN
deb http://mirror.ovh.net/debian/ stable main contrib non-free
deb-src http://mirror.ovh.net/debian/ stable main contrib non-free
deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
# mod security
deb http://ftp.debian.org/debian/ jessie-backports main
Code language: PHP (php)
Préparation à la mise à jour de Debian
J’ai commencé par vérifier qu’aucun paquet n’était à moitié installé :
dpkg --audit
ou en attente :
dpkg --get-selections | grep 'hold
Code language: JavaScript (javascript)
Rien? Tout va bien, on continue et on simule une installation avec :
apt-get -o APT::Get::Trivial-Only=true dist-upgrade
Code language: PHP (php)
Le résultat est une longue liste de paquets, suivie du message suivant:
439 upgraded, 192 newly installed, 5 to remove and 1 not upgraded.
Need to get 275 MB of archives.
After this operation, 259 MB of additional disk space will be used.
E: Trivial Only specified but this is not a trivial operation.
Code language: JavaScript (javascript)
Nos sauvegardes sont faites, on se lance.
Mise à jour Debian
On rafraichit les dépôts et on lance l’installation:
apt-get update && apt-get upgrade
Code language: JavaScript (javascript)
On obtient un laïus avec ce qui change. J’aperçois plusieurs pages sur Apache, on y reviendra. Cela dure à peu près une dizaine de minutes, bien que je n’ai pas vraiment minuté.
Une fois l’installation terminée, on résout les dépendances et les paquets manquants avec :
apt-get dist-upgrade
Code language: JavaScript (javascript)
Je lance le site pour voir : paf, erreur 403.
Configuration d’Apache 2.4
Avec Jessie, on passe d’Apache 2.2 à la version 2.4, ce qui implique quelques changements.
Fichiers de configuration
Tout d’abord, tous les fichiers de configuration dans /etc/apache2/sites-available
et /etc/apache2/mods-available
doivent porter l’extension .conf et être activés avec a2ensite
.
Contrôle d’accès
Dans les fichiers de configuration, il faut modifier les directives du contrôle d’accès.
Pour tout bloquer, on met maintenant Require all denied
:
# Apache 2.2
# Order deny,allow
# Deny from all
# Apache 2.4
Require all denied
Code language: PHP (php)
Pour tout autoriser, on met Require all granted
:
# Apache 2.2
# Order allow,deny
# Allow from all
# Apache 2.4
Require all granted
Code language: PHP (php)
Désactivation du mod SPDY
Le mod SPDY est incompatible avec Apache 2.4:
apache2: Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/spdy.load: Cannot load /usr/lib/apache2/modules/mod_spdy.so into server: /usr/lib/apache2/modules/mod_spdy.so: undefined symbol: ap_log_cerror
Code language: JavaScript (javascript)
donc, on le désactive :
a2dismod spdy
Activation de mod_security2
Au redémarrage d’Apache, mod_security fait des siennes :
apache2: Syntax error on line 141 of /etc/apache2/apache2.conf: Syntax error on line 9 of /etc/apache2/mods-enabled/security2.conf: No matches for the wildcard '*.conf' in '/etc/modsecurity', failing (use IncludeOptional if required)
Code language: PHP (php)
Il suffit de renommer le fichier modsecurity.conf-recommended
en modsecurity.conf
:
mv /etc/modsecurity/modsecurity.conf{-recommended,}
et d’activer le mod
a2enmod security2
puis de relancer Apache :
service apache2 restart
Plus d’images sur le sous-domaine
Sur mon sous-domaine dédié aux images et autres ressources statiques, tout était renvoyé en 403. Le problème venait du fait que j’avais mis une directive Directory à l’intérieur de mon VirtualHost : en le déplaçant en dehors du bloc VirtualHost, plus aucun problème.
Postfix
Enfin, j’ai remarqué que les mails n’arrivaient plus avec Postfix. Un petît tour dans les logs m’a appris que j’avais des directives en double dans le fichier main.cf :
send-mail: warning: /etc/postfix/main.cf, line 150: overriding earlier entry: smtpd_tls_key_file=$smtpd_tls_cert_file
send-mail: warning: /etc/postfix/main.cf, line 151: overriding earlier entry: smtpd_tls_cert_file=/etc/ssl/postfix.pem
Code language: JavaScript (javascript)
Il suffit de supprimer les doublons et de relancer Postfix :
service postfix restart
Voilà, c’est tout.
Recherchez-vous un expert WordPress ou WooCommerce sur qui vous pouvez compter? Ne cherchez plus.