Debian 11 Bullseye : installer et configurer la dernière version de PHP 8 FPM avec Nginx
Sun, 10/31/2021 - 09:34 — geek17Nous allons installer dans cet article la toute dernière version de PHP 8 FPM que nous allons couplé au serveur web NGINX (version debian).
J'ai longtemps été un fan de Apache httpd que j'utilisais systématiquement en tant que serveur web.
Mais depuis que j'ai essayé Nginx, je l'ai adopté : il est super performant et consomme beaucoup moins de ressources.
Cette installation de base sera utilisée par la suite pour ajouter le support de HTTPS et du protocole HTTP/2.
Ajout du dépôt sury.org à votre config
Nous allons installer la dernière version de PHP 8. Et même si Debian 11 vient de sortir, il ne propose que PHP 7.4.
Sur sury.org, la dernière version stable est la version 8.0 et la version mainline est en 1.17.x (c'est cette version mainline que nous allons installer)
Commençons donc par ajouter le fichier nginx.list dans le dossier des sources additionnelles utilisé par apt-get.
sudo nano /etc/apt/sources.list.d/php.list
Puis nous ajoutons la ligne suivante à la fin du fichier.
deb https://packages.sury.org/php/ bullseye main
Les paquets du sury.org sont signés, il faut donc télécharger la clé de chiffrage.
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
Enfin, on actualise la liste des paquets.
sudo apt-get update
Installation de nginx et PHP 8.0 FPM
On installe en une fois, Nginx et PHP 8.0 FPM plus quelques modules PHP très utiles, voir indispensables
sudo apt-get install nginx php8.0-fpm php8.0-gd php8.0-mysql php8.0-curl php8.0-imap php8.0-mbstring php8.0-xml php8.0-sqlite3
Les paquets php8.0-cli php8.0-common php8.0-opcache seront également installés automatiquement.
A la fin de l'installation, vous pouvez vérifier les versions installées avec les commandes suivantes :
sudo php -v
PHP 8.0.11 (cli) (built: Sep 23 2021 22:04:05) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.11, Copyright (c) Zend Technologies
with Zend OPcache v8.0.11, Copyright (c), by Zend Technologies
sudo nginx -v
nginx version: nginx/1.18.0
Le service nginx est automatiquement démarré après l'installation.
Si vous ouvrez votre navigateur Internet à l'adresse IP de votre serveur, vous recevrez une réponse de Nginx
Configuration de PHP 8.0 FPM
Nous allons maintenant configurer PHP 8.0 FPM et Nginx pour qu'ils puissent dialoguer.
Commençons par ouvrir le fichier de configuration de PHP 8.0 FPM pour vérifier la configuration.
sudo nano /etc/php/8.0/fpm/pool.d/www.conf
Puis on s'assure que ce fichier contient la configuration suivante.
En résumé, le mode de communication est un socket UNIX (/run/php/php8.0-fpm.sock) et c'est l'utilisateur www-data, du groupe www-data qui l'exécute.
user = www-data
group = www-data
listen = /run/php/php8.0-fpm.sock
listen.owner = www-data
listen.group = www-data
On ouvre ensuite le fichier de configuration de Nginx
sudo nano /etc/nginx/nginx.conf
Puis on s'assure que ce fichier contient la configuration suivante.
Il y a de grande chance que l'utilisateur soit nginx par défaut, remplacez le par www-data
user www-data;
On doit maintenant indiquer à Nginx comment traiter les fichiers PHP.
Pour cela, on ouvre la configuration du vHost par défaut.
sudo nano /etc/nginx/sites-enabled/default
Et on ajoute la configuration suivante, à l'intérieur de la balise server { }
# pass the PHP scripts to FastCGI server listening on /run/php/php8.0-fpm.sock
#
location ~ \.php$ {
root /var/www/html;
try_files $uri =404;
fastcgi_index index.php;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Et ne pas oublier d'ajouter index.php sur la ligne
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
Reste à redémarrer les services PHP 8.0 FPM et Nginx pour activer les modifications.
sudo service php8.0-fpm restart
sudo service nginx restart
Vérification du bon fonctionnement de PHP
L'emplacement des fichiers web publiés par le vHost Nginx par défaut est /var/www/html
On va ajouter le petit fichier phpinfo.php dans ce dossier
sudo nano /var/www/html/phpinfo.php
Puis on ajoute le code suivant dans le fichier phpinfo.php que l'on vient de créer
<?php phpinfo();
Reste enfin à ouvrir cette page dans votre navigateur pour obtenir
Si vous souhaitez aller plus loin dans la configuration de Nginx et de PHP 8.0 FPM, rendez-vous sur l'article suivant.