Serveur dédié : mise à jour vers PHP7.1 sous Debian

Aujourd’hui, le serveur passe à PHP7.1 !

Ce tutoriel aborde le passage de PHP7.0 à PHP7.1 sur une Debian stable (Jessie).

L’opération prend une vingtaine de minutes, en comptant les opérations de vérifications (pre-flight checks en anglais).

La retraite PHP chez Dotdeb

Guillaume Plessis, qui maintient Dotdeb, a récemment annoncé que pour des raisons personnelles et professionnelles, Dotdeb ne fournira plus les mises à jour de PHP passé la version 7.0.

Je comprends sa décision : c’est chronophage et il faut pouvoir être en mesure de répondre aux commentaires et attentes d’une foule de personnes qui utilisent ce dépôt. Pas toujours simple. Merci Guillaume pour tout le travail accompli !

Vérification de la compatibilité PHP7.x sous WordPress

Si votre site tourne sous WordPress, il existe un plugin très utile – PHP Compatibility Checker – qui permet de vérifier que la mise à jour n’impactera pas votre site.

Je pense notamment aux plugins dont certains peuvent être assez vieillots et dont les fonctions peuvent être maintenant obsolètes.

Lancez-le avant de faire la mise à jour. S’il rapporte des warnings, ce n’est pas un problème. Si ce sont des erreurs par contre, mieux vaut y jeter un oeil avant de mettre à jour votre serveur.

Nouveau dépôt PHP : Ondrey Sury

Si l’on veut PHP7.1, il faut donc changer de dépôt et utiliser celui d’Ondrey Sury.

On installe donc ce nouveau dépôt :

apt install apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" >> /etc/apt/sources.list

Installation de PHP7.1

On met à jour et on installe PHP7.1 :

apt update && apt upgrade

Résultat :

The following NEW packages will be installed:
  libzip4 php7.1-cli php7.1-common php7.1-curl php7.1-fpm php7.1-gd php7.1-json php7.1-mbstring php7.1-mcrypt php7.1-opcache php7.1-readline php7.1-xml php7.1-xmlrpc
The following packages will be upgraded:
  libssl-doc libssl1.0.2 php-common php-curl php-fpm php-gd php-mbstring php-mcrypt php-xml php-xmlrpc php7.0 php7.0-bcmath php7.0-cli php7.0-common php7.0-curl php7.0-fpm php7.0-gd php7.0-json php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-readline php7.0-soap php7.0-xml php7.0-xmlrpc php7.0-zip

On installe les paquets manquants :

php7.1-mysql php7.1-soap

Paramétrage de PHP-FPM et NginX

Configuration de PHP-FPM

On édite php.ini:

nano /etc/php/7.1/fpm/php.ini

et on modifie:

upload_max_filesize = 32M
post_max_size = 32M

On vérifie que PHP-FPM est bien configuré pour utiliser les sockets :

grep -E '^\s*listen\s*=\s*[a-zA-Z/]+' /etc/php/7.1/fpm/pool.d/www.conf

Cela doit retourner la valeur suivante:

listen = /run/php/php7.1-fpm.sock

Si ce n’est pas le cas, on édite la configuration de PHP-FPM :

nano /etc/php/7.1/fpm/pool.d/www.conf

et on met à jour le fichier avec les directives suivantes:

[www]
listen = /run/php/php7.1-fpm.sock
user = www-data
group = www-data
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

On redémarre les services:

service php7.1-fpm restart

Paramétrage de NginX

Editez le fichier de configuration de votre site, nous avons une ligne à changer pour pointer vers le bon binaire PHP :

nano /etc/nginx/sites-available/skyminds.net

On cherche la ligne fastcgi_pass et on pointe vers php7.1-fpm.sock:

#fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;

A ce stade, il ne reste plus qu’à redémarrer PHP-FPM et NginX:

service php7.1-fpm restart
service nginx restart

Voyons maintenant quelle est notre version de PHP:

php -v

Résultat:

PHP 7.1.3-2+0~20170315222009.20+jessie~1.gbpc7e7dd (cli) (built: Mar 15 2017 23:00:57) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.3-2+0~20170315222009.20+jessie~1.gbpc7e7dd, Copyright (c) 1999-2017, by Zend Technologies

Nettoyage de l’ancienne version de PHP

Dernière étape : on retire tous les paquets de la version 7.0 de PHP:

apt-get purge php7.0-*

Résultat :

The following packages will be REMOVED:
  php7.0-bcmath* php7.0-cli* php7.0-common* php7.0-curl* php7.0-fpm*
  php7.0-gd* php7.0-json* php7.0-mbstring* php7.0-mcrypt* php7.0-mysql*
  php7.0-opcache* php7.0-readline* php7.0-soap* php7.0-xml* php7.0-xmlrpc*
  php7.0-zip*

Si vous utilisez des alias bash, n’oubliez pas de modifier le chemin du binaire PHP. De même pour les outils de monitoring.

Et voilà! Votre serveur arbore fièrement les couleurs de PHP7.1 !

Vous voulez un site WordPress ou WooCommerce qui soit à la fois rapide et performant? Vous êtes au bon endroit.

Découvrez comment je peux booster votre site »

Articles conseillés :

2 pensées sur “Serveur dédié : mise à jour vers PHP7.1 sous Debian”

  1. il manque un flèche supérieur dans la ligne:
    echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" >> /etc/apt/sources.list

    au lieu d’ajouter la ligne, on écrase le contenu de sources.list

    Reply

Opinions