Comment configurer des pools PHP-FPM distincts dans NGINX
Publié : 15 février 2025 à 11 h 57 min 29 s UTC
Dans cet article, je passe en revue les étapes de configuration nécessaires pour exécuter plusieurs pools PHP-FPM et y connecter NGINX via FastCGI, permettant la séparation et l'isolation des processus entre les hôtes virtuels.
How to Set Up Separate PHP-FPM Pools in NGINX
Les renseignements contenus dans cet article sont basés sur NGINX 1.4.6 et PHP-FPM 5.5.9 exécutés sur Ubuntu Server 14.04 x64. Cela peut être valable ou non pour d'autres versions. (Mise à jour : je peux confirmer qu'à partir d'Ubuntu Server 24.04, PHP-FPM 8.3 et NGINX 1.24.0, toutes les instructions de cet article fonctionnent toujours)
Il y a un certain nombre d'avantages à configurer plusieurs pools de processus enfants PHP-FPM plutôt que d'exécuter tout dans le même pool. La sécurité, la séparation/l’isolement et la gestion des ressources viennent à l’esprit comme quelques-uns des principaux enjeux.
Quelle que soit votre motivation, cet article vous aidera à y parvenir :-)
Partie 1 – Configurer un nouveau groupe PHP-FPM
Tout d’abord, vous devez localiser le répertoire où PHP-FPM stocke ses configurations de pool. Sur Ubuntu 14.04, c'est /etc/php5/fpm/pool.d par défaut. Il existe probablement déjà un fichier appelé www.conf , qui contient la configuration du pool par défaut. Si vous n'avez jamais consulté ce fichier auparavant, il y a de fortes chances que vous deviez le parcourir et modifier les paramètres qu'il contient pour votre configuration, car les valeurs par défaut sont destinées à un serveur assez peu puissant, mais pour l'instant, faites-en simplement une copie afin de ne pas avoir à repartir de zéro :
Bien sûr, remplacez « mypool » par le nom que vous voulez donner à votre piscine.
Ouvrez maintenant le nouveau fichier à l’aide de nano ou de l’éditeur de texte de votre choix et ajustez-le en fonction de vos besoins. Vous voudrez probablement modifier les numéros de processus enfants et éventuellement l'utilisateur et le groupe sous lesquels le pool s'exécute, mais les deux paramètres que vous devez absolument modifier sont le nom du pool et le socket qu'il écoute, sinon il entrera en conflit avec le pool existant et les choses cesseront de fonctionner.
Le nom du pool est situé en haut du fichier, entre crochets. Par défaut c'est [www] . Changez ça comme vous le voulez ; Je suggère de nommer le fichier de configuration de la même manière que vous, donc pour les besoins de cet exemple, changez-le en [mypool] . Si vous ne le changez pas, il semble que PHP-FPM ne chargera que le premier fichier de configuration portant ce nom, ce qui risque de casser les choses.
Vous devez ensuite modifier le socket ou l'adresse que vous écoutez, qui est définie par la directive listen . Par défaut, PHP-FPM utilise des sockets Unix, donc votre directive d'écoute ressemblera probablement à ceci :
Vous pouvez le modifier avec le nom valide que vous voulez, mais encore une fois, je suggère de vous en tenir à quelque chose de similaire au nom du fichier de configuration, vous pouvez donc par exemple le définir sur :
Très bien, enregistrez le fichier et quittez l'éditeur de texte.
Partie 2 – Mettre à jour la configuration de l'hôte virtuel NGINX
Vous devez maintenant ouvrir le fichier hôte virtuel NGINX avec la configuration FastCGI que vous souhaitez modifier vers 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. Vous savez probablement mieux où se trouvent vos configurations d'hôte virtuel ;-)
Ouvrez le fichier de configuration approprié dans votre éditeur de texte préféré et recherchez la directive fastcgi_pass (qui doit être dans un contexte d'emplacement) 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 effectuée à l'étape 1. Ainsi, en continuant notre exemple, vous modifieriez ceci en :
fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Ensuite, enregistrez et fermez aussi ce fichier. Vous avez presque terminé maintenant.
Partie 3 – Redémarrer PHP-FPM et NGINX
Pour appliquer les modifications de configuration que vous avez effectuées, redémarrez PHP-FPM et NGINX. Il peut être suffisant de recharger au lieu de redémarrer , mais je trouve que c'est un peu aléatoire, selon les paramètres modifiés. Dans le cas particulier, je voulais que les anciens processus enfants PHP-FPM meurent immédiatement, donc le redémarrage de PHP-FPM était nécessaire, mais pour NGINX, un rechargement peut être suffisant. Essayez-le par vous-même.
sudo service nginx restart
Et voilà, vous avez 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 de processus enfants avec d'autres hôtes virtuels.