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.listCode language: PHP (php)

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-zipCode language: CSS (css)

On installe les paquets manquants :

php7.1-mysql php7.1-soapCode language: CSS (css)

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.confCode language: JavaScript (javascript)

Cela doit retourner la valeur suivante:

listen = /run/php/php7.1-fpm.sockCode language: JavaScript (javascript)

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 = 10Code language: JavaScript (javascript)

On redémarre les services:

service php7.1-fpm restartCode language: CSS (css)

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;Code language: PHP (php)

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

service php7.1-fpm restart
service nginx restartCode language: CSS (css)

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 TechnologiesCode language: CSS (css)

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-*Code language: JavaScript (javascript)

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*Code language: CSS (css)

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 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 !

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