Miklix

Comment configurer des pools PHP-FPM séparés dans NGINX

Publié : 15 février 2025 à 11:52:29 UTC
Dernière mise à jour : 12 janvier 2026 à 08:29:57 UTC

Dans cet article, je détaille les étapes de configuration nécessaires pour exécuter plusieurs pools PHP-FPM et connecter NGINX à ces derniers via FastCGI, permettant ainsi la séparation et l'isolation des processus entre les hôtes virtuels.


Cette page a été traduite de l'anglais afin de la rendre accessible au plus grand nombre. Malheureusement, la traduction automatique n'est pas encore une technologie parfaite, et des erreurs peuvent donc se produire. Si vous préférez, vous pouvez consulter la version originale en anglais ici :

How to Set Up Separate PHP-FPM Pools in NGINX

Les informations contenues dans cet article sont basées sur NGINX 1.4.6 et PHP-FPM 5.5.9 exécutés sur Ubuntu Server 14.04 x64. Leur validité pour d'autres versions n'est pas garantie. (Mise à jour : Je confirme que sur Ubuntu Server 24.04, avec PHP-FPM 8.3 et NGINX 1.24.0, toutes les instructions de cet article fonctionnent toujours.)

Il existe plusieurs avantages à configurer plusieurs pools de processus enfants PHP-FPM plutôt que d'exécuter tout dans un seul pool. La sécurité, la séparation/l'isolation et la gestion des ressources sont parmi les principaux avantages.

Quelle que soit votre motivation, cet article vous aidera à y parvenir :-)

Partie 1 – Configurer un nouveau pool PHP-FPM

Tout d'abord, vous devez localiser le répertoire où PHP-FPM stocke ses configurations de pool. Sous Ubuntu 14.04, il s'agit par défaut de `/etc/php5/fpm/pool.d`. Un fichier nommé `www.conf`, contenant la configuration du pool par défaut, s'y trouve probablement déjà. Si vous n'avez jamais consulté ce fichier, il est conseillé de le faire et d'adapter ses paramètres à votre configuration, car les valeurs par défaut sont conçues pour un serveur peu puissant. Pour l'instant, faites-en simplement une copie afin de ne pas avoir à tout recommencer.

sudo cp www.conf mypool.conf

Bien sûr, remplacez « mypool » par le nom que vous souhaitez donner à votre piscine.

Ouvrez maintenant le nouveau fichier avec nano ou tout autre éditeur de texte de votre choix et personnalisez-le selon vos besoins. Vous souhaiterez probablement ajuster le nombre de processus enfants et éventuellement l'utilisateur et le groupe sous lesquels le pool s'exécute. Cependant, les deux paramètres que vous devez absolument modifier sont le nom du pool et le socket sur lequel il écoute, faute de quoi il entrera en conflit avec le pool existant et le système cessera de fonctionner.

Le nom du pool se trouve en haut du fichier, entre crochets. Par défaut, il s'agit de [www]. Modifiez-le comme vous le souhaitez ; je vous suggère d'utiliser le même nom que celui de votre fichier de configuration, par exemple [mypool]. Si vous ne le modifiez pas, PHP-FPM ne chargera que le premier fichier de configuration portant ce nom, ce qui risque de provoquer des dysfonctionnements.

Vous devez ensuite modifier le socket ou l'adresse d'écoute, définie par la directive `listen`. Par défaut, PHP-FPM utilise des sockets Unix ; votre directive `listen` ressemblera donc probablement à ceci :

listen = /var/run/php5-fpm.sock

Vous pouvez le modifier et lui choisir n'importe quel nom valide, mais je vous suggère de rester fidèle au nom du fichier de configuration. Vous pourriez par exemple le définir sur :

listen = /var/run/php5-fpm-mypool.sock

Très bien, enregistrez le fichier et quittez l'éditeur de texte.

Partie 2 – Mise à jour de la configuration de l'hôte virtuel NGINX

Vous devez maintenant ouvrir le fichier hôte virtuel NGINX contenant la configuration FastCGI que vous souhaitez modifier pour un nouveau pool – ou plutôt, vous connecter au nouveau socket.

Par défaut, sous Ubuntu 14.04, ces fichiers sont stockés dans le répertoire `/etc/nginx/sites-available`, mais ils peuvent également être définis ailleurs. Vous savez probablement mieux que quiconque où se trouvent les configurations de vos hôtes virtuels ;-)

Ouvrez le fichier de configuration correspondant dans votre éditeur de texte préféré et recherchez la directive `fastcgi_pass` (qui doit se trouver dans un contexte `location`) définissant le socket PHP-FPM. Vous devez modifier cette valeur pour qu'elle corresponde à la nouvelle configuration du pool PHP-FPM que vous avez créée à l'étape 1. Dans notre exemple, vous la modifieriez donc comme suit :

Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;

Ensuite, enregistrez et fermez ce fichier. Vous avez presque terminé.

Partie 3 – Redémarrage de PHP-FPM et NGINX

Pour appliquer les modifications de configuration que vous avez effectuées, redémarrez PHP-FPM et NGINX. Un simple rechargement peut suffire, mais le résultat est aléatoire et dépend des paramètres modifiés. Dans mon cas précis, je souhaitais que les anciens processus enfants de PHP-FPM s'arrêtent immédiatement ; un redémarrage de PHP-FPM était donc nécessaire. En revanche, pour NGINX, un rechargement peut suffire. Faites le test vous-même.

sudo service php5-fpm restart
sudo service nginx restart

Et voilà, c'est terminé. Si vous avez tout fait correctement, l'hôte virtuel que vous avez modifié devrait maintenant utiliser le nouveau pool PHP-FPM et ne pas partager les processus enfants avec d'autres hôtes virtuels.

Partager sur BlueskyPartager sur FacebookPartager sur LinkedInPartager sur TumblrPartager sur XPartager sur LinkedInÉpingler sur Pinterest

Mikkel Christensen

A propos de l'auteur

Mikkel Christensen
Mikkel est le créateur et le propriétaire de miklix.com. Il a plus de 20 ans d'expérience en tant que programmeur informatique professionnel/développeur de logiciels et travaille actuellement à plein temps pour une grande entreprise européenne de TI. Lorsqu'il ne blogue pas, il consacre son temps libre à un large éventail d'intérêts, de passe-temps et d'activités, ce qui peut se refléter dans une certaine mesure dans la variété des sujets abordés sur ce site web.