21/11/2024

Apache

Comment configurer Apache2 avec PHP-FPM 8.2 pour exécuter les scripts PHP ?

I. Présentation

Dans ce tutoriel, nous allons apprendre à installer PHP-FPM 8.2 sur un serveur Web Apache2 sous Debian 12. Avant cela, nous verrons pourquoi il faut préférer PHP-FPM plutôt que le module PHP pour Apache.

PHP-FPM pour PHP FastCGI Process Manager fonctionne différemment du module PHP pour Apache2. En fait, PHP-FPM va créer des processus distincts de deux du serveur Web, c'est-à-dire que la liste des processus contiendra des processus PHP-FPM et des processus Apache2. A l'inverse, lorsque PHP est exécuté en tant que module Apache, chaque processus Apache exécute son propre moteur de scripts PHP.

Pour optimiser les ressources, il est recommandé d'utiliser PHP-FPM plutôt que le module pour Apache connu sous le nom de "libapache2-mod-php". Avec PHP-FPM, vous pourrez gérer plus de connexions simultanées tout en utilisant moins de ressources. Intéressant, non ?

Remarque : sur un serveur existant, vous pouvez tout à fait passer de mod_php à PHP-FPM. Nous pouvons même dire que c'est recommandé !

II. Installation de PHP-FPM 8.2 sur Debian 12

Pour la suite de ce tutoriel, une machine sous Debian 12 sur laquelle le paquet Apache2 a été installé sera utilisée. Tout d'abord, nous devons installer le paquet PHP8.2-FPM, afin d'utiliser PHP 8.2. Ce qui donne :

sudo apt-get update
sudo apt-get install php8.2-fpm

Ensuite, nous devons activer deux modules dans Apache2 ainsi qu'un fichier de configuration :

sudo a2enmod proxy_fcgi setenvif 
sudo a2enconf php8.2-fpm 
sudo systemctl reload apache2

Voilà, PHP-FPM pour PHP 8.2 est installé et activé sur le serveur.

III. Intégrer PHP-FPM à Apache

Pour qu'Apache sollicite PHP-FPM pour l'exécution des scripts PHP, vous devez configurer chaque VirtualHost en conséquence. En fait, vous devez indiquer dans votre VirtualHost que pour tous les fichiers ".php", il faut solliciter PHP8.2-FPM en local.

Vous devez éditer le fichier de votre VirtualHost, par exemple :

sudo nano /etc/apache2/sites-available/support.it-connect.tech.conf

Puis, ajoutez ce bloc de 3 lignes à l'intérieur des balises <VirtualHost>, comme ceci :

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost/"
</FilesMatch>

Vous pouvez intégrer ces lignes à l'identique, si ce n'est qu'il faudra adapter en fonction de la version de PHP-FPM que vous utilisez. Ici, c'est bien "php8.2-fpm" qui est spécifié.

Enregistrez et redémarrez Apache pour prendre en compte les changements :

sudo systemctl restart apache2

En principe, la commande ci-dessous doit vous retourner la valeur "mpm_prefork_module (shared)".

sudo apachectl -M | grep 'mpm'

IV. Comment configurer PHP-FPM ?

Ceux qui ont l'habitude d'utiliser mod_php ont également l'habitude de modifier le fichier "/etc/php/8.2/apache2/php.ini" pour configurer PHP. Oubliez ce fichier ! Désormais, vous devez éditer le fichier suivant :

sudo nano /etc/php/8.2/fpm/php.ini

A l'intérieur, vous retrouvez toutes les directives pour configurer PHP : memory_limit, upload_max_filesize, max_file_uploads, session.cookie_httponly, etc...

Il vous suffit d'effectuer votre configuration et d'enregistrer le fichier.

; Whether or not to add the httpOnly flag to the cookie, which makes it
; inaccessible to browser scripting languages such as JavaScript.
; https://php.net/session.cookie-httponly
session.cookie_httponly = on

Ensuite, pour appliquer les modifications, nous n'allons pas redémarrer Apache2 ! C'est bien le service PHP-FPM qu'il faut redémarrer :

sudo systemctl restart php8.2-fpm.service

V. Conclusion

Après avoir appliqué cette configuration, votre serveur Web Apache2 exécute les scripts PHP à l'aide de PHP-FPM ! Si vous exécutez la commande "top" sur votre machine, vous devriez voir des processus "apache2" et des processus "php-fpm8.2".

Linux Debian - Processus Apache2 PHP-FPM
author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

2 commentaires sur “Comment configurer Apache2 avec PHP-FPM 8.2 pour exécuter les scripts PHP ?

  • Bonjour Florian,

    Merci pour ce tuto tres clair qui explique bien FPM!
    Je vais me mettre a l’utiliser!

    Bonne journée

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.