Miklix

Comment configurer des pools PHP-FPM distincts dans NGINX

Publié : 15 février 2025 à 11 h 57 min 29 s UTC
Dernière mise à jour : 12 janvier 2026 à 08 h 30 min 31 s UTC

Dans cet article, j’explique les étapes de configuration nécessaires pour exécuter plusieurs pools PHP-FPM et y connecter NGINX via FastCGI, permettant ainsi la séparation des processus et l’isolement entre hôtes virtuels.


Cette page a été automatiquement traduite de l'anglais afin de la rendre accessible au plus grand nombre. Malheureusement, la traduction automatique n'est pas encore une technologie au point, des erreurs peuvent donc survenir. 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 ce billet sont basées sur NGINX 1.4.6 et PHP-FPM 5.5.9 fonctionnant sur Ubuntu Server 14.04 x64. Cela peut être valide ou non pour d’autres versions. (Mise à jour : je peux confirmer qu’avec Ubuntu Server 24.04, PHP-FPM 8.3 et NGINX 1.24.0, toutes les instructions de ce message fonctionnent encore)

Il y a plusieurs avantages à configurer plusieurs pools de processus enfants PHP-FPM plutôt que de tout faire fonctionner dans le même pool. La sécurité, la séparation/l’isolement et la gestion des ressources me viennent à l’esprit comme quelques-uns des principaux exemples.

Peu importe ta motivation, ce billet va t’aider à y arriver :-)

Partie 1 – Mettre en place un nouveau pool PHP-FPM

D’abord, vous devez localiser le répertoire où PHP-FPM stocke ses configurations de pool. Sous Ubuntu 14.04, c’est /etc/php5/fpm/pool.d par défaut. Il y a probablement déjà un fichier là-bas appelé www.conf, qui contient la configuration du pool par défaut. Si tu n’as jamais regardé ce fichier avant, il y a de fortes chances que tu devrais le parcourir et ajuster les paramètres pour ton installation, car les paramètres par défaut sont pour un serveur assez sous-puissant, mais pour l’instant, fais-en juste une copie pour ne pas avoir à repartir de zéro :

sudo cp www.conf mypool.conf

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

Maintenant, ouvre le nouveau fichier en utilisant un nano ou l’éditeur de texte que tu préfères et ajuste-le selon ton usage. Vous voudrez probablement ajuster les numéros de processus enfants et possiblement l’utilisateur et le groupe sous lequel le pool fonctionne, mais les deux réglages que vous devez absolument changer sont le nom du pool et le socket qu’il écoute, sinon cela entrera en conflit avec le pool existant et tout ne fonctionnera plus.

Le nom de la piscine se trouve près du haut du dossier, entre crochets. Par défaut, c’est [www]. Changez ça comme vous voulez; Je suggère la même chose que vous avez nommée le fichier de configuration, donc pour les besoins de cet exemple, changez-le en [mypool]. Si vous ne le modifiez pas, il semble que PHP-FPM ne chargera que le premier fichier de configuration avec ce nom, ce qui risque de casser des problèmes.

Vous devez ensuite changer le socket ou l’adresse que vous écoutez, qui est défini par la directive d’écoute. Par défaut, PHP-FPM utilise des sockets Unix, donc votre directive d’écoute ressemblera probablement à ceci :

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

Vous pouvez le changer pour le nom valide que vous voulez, mais encore une fois, je suggère de rester avec quelque chose de similaire au nom du fichier de configuration, pour que vous puissiez par exemple le définir comme suit :

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

Bon, enregistre le fichier et quitte l’éditeur de texte.

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

Maintenant, vous devez ouvrir le fichier hôte virtuel NGINX avec la configuration FastCGI que vous voulez changer pour un nouveau pool – ou plutôt, vous connecter au nouveau socket.

Par défaut sur Ubuntu 14.04, ceux-ci sont stockés sous /etc/nginx/sites-available, mais peuvent aussi être définis ailleurs. Tu sais probablement mieux où se trouvent tes configurations d’hôtes virtuels;-)

Ouvre le fichier de configuration pertinent dans ton éditeur de texte préféré et cherche la directive fastcgi_pass (qui doit être dans un contexte de localisation) définissant le socket PHP-FPM. Vous devez modifier cette valeur pour qu’elle corresponde à la nouvelle configuration de pool PHP-FPM que vous avez faite à l’étape un, donc en poursuivant notre exemple, vous la modifieriez ainsi ainsi :

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

Ensuite, sauvegarder et fermer ce fichier aussi. Tu as presque fini maintenant.

Partie 3 – Redémarrer PHP-FPM et NGINX

Pour appliquer les changements de configuration que vous avez faits, redémarrez à la fois PHP-FPM et NGINX. Ça peut suffire à recharger au lieu de redémarrer, mais je trouve que c’est un peu aléatoire, selon les réglages modifiés. Dans ce cas particulier, je voulais que les anciens processus enfants PHP-FPM meurent immédiatement, donc redémarrer PHP-FPM était nécessaire, mais pour NGINX, un rechargement peut suffire. Essaie par toi-même.

sudo service php5-fpm restart
sudo service nginx restart

Et voilà, c’est fini. 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 de 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

À propos de l'auteur

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