Serveur dédié : la mise à jour vers Debian 8 Jessie

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.listCode 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 mainCode 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 'holdCode language: JavaScript (javascript)

Rien? Tout va bien, on continue et on simule une installation avec :

apt-get -o APT::Get::Trivial-Only=true dist-upgradeCode 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 upgradeCode 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-upgradeCode 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 deniedCode 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 grantedCode 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_cerrorCode 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.pemCode language: JavaScript (javascript)

Il suffit de supprimer les doublons et de relancer Postfix :

service postfix restart

Voilà, c’est tout.

Vous avez un projet WordPress ou WooCommerce en tête? Transformez votre vision en réalité avec mon expertise reconnue.

Parlons de votre projet dès aujourd'hui »

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