Com configurar grups PHP-FPM separats a NGINX
Publicat: 5 de març del 2025, a les 19:30:48 UTC
Última actualització: 12 de gener del 2026, a les 8:30:28 UTC
En aquest article, repasso els passos de configuració necessaris per executar diversos grups de PHP-FPM i connectar-hi NGINX mitjançant FastCGI, permetent la separació de processos i l'aïllament entre hosts virtuals.
How to Set Up Separate PHP-FPM Pools in NGINX
La informació d'aquesta publicació es basa en NGINX 1.4.6 i PHP-FPM 5.5.9 executant-se en Ubuntu Server 14.04 x64. Pot ser vàlida o no per a altres versions. (Actualització: puc confirmar que a partir d'Ubuntu Server 24.04, PHP-FPM 8.3 i NGINX 1.24.0, totes les instruccions d'aquesta publicació encara funcionen)
Hi ha diversos avantatges en configurar diversos grups de processos fills de PHP-FPM en lloc d'executar-ho tot al mateix grup. La seguretat, la separació/aïllament i la gestió de recursos són alguns dels principals.
Independentment de la teva motivació, aquesta publicació t'ajudarà a aconseguir-ho :-)
Part 1: Configurar un nou grup de PHP-FPM
Primer, heu de localitzar el directori on PHP-FPM emmagatzema les configuracions del pool. A Ubuntu 14.04, aquest és /etc/php5/fpm/pool.d per defecte. Probablement ja hi ha un fitxer anomenat www.conf, que conté la configuració del pool per defecte. Si no heu mirat aquest fitxer abans, és probable que el reviseu i ajusteu la configuració per a la vostra configuració, ja que els valors per defecte són per a un servidor amb poca potència, però de moment només feu-ne una còpia perquè no hàgim de començar de zero:
Per descomptat, substitueix "mypool" pel nom que vulguis que es digui a la teva piscina.
Ara obriu el fitxer nou amb nano o l'editor de text que preferiu i ajusteu-lo al vostre propòsit. Probablement voldreu modificar els números de procés fill i possiblement amb quin usuari i grup s'executa el pool, però els dos paràmetres que heu de canviar absolutament són el nom del pool i el sòcol que escolta, ja que en cas contrari entrarà en conflicte amb el pool existent i les coses deixaran de funcionar.
El nom del grup és a prop de la part superior del fitxer, entre claudàtors. Per defecte és [www]. Canvieu-lo pel que vulgueu; us suggereixo el mateix nom que heu posat al fitxer de configuració, així que, per a aquest exemple, canvieu-lo a [mypool]. Si no el canvieu, sembla que PHP-FPM només carregarà el primer fitxer de configuració amb aquest nom, cosa que probablement farà que no funcioni.
A continuació, heu de canviar el sòcol o l'adreça que esteu escoltant, que es defineix amb la directiva listen. Per defecte, PHP-FPM utilitza sòcols Unix, de manera que la directiva listen probablement tindrà aquest aspecte:
Podeu canviar-lo pel nom vàlid que vulgueu, però, de nou, us suggereixo que us quedeu amb un nom similar al nom del fitxer de configuració, de manera que, per exemple, el podríeu definir com a:
D'acord, doncs, deseu el fitxer i sortiu de l'editor de text.
Part 2: Actualitzar la configuració de l'amfitrió virtual NGINX
Ara heu d'obrir el fitxer d'amfitrió virtual NGINX amb la configuració FastCGI que voleu canviar a un nou grup, o millor dit, connectar-vos al nou sòcol.
Per defecte a Ubuntu 14.04, aquests s'emmagatzemen a /etc/nginx/sites-available, però també es poden definir en un altre lloc. Probablement sigui millor que sàpigues on es troben les configuracions de l'amfitrió virtual ;-)
Obriu el fitxer de configuració pertinent al vostre editor de text preferit i busqueu la directiva fastcgi_pass (que ha d'estar en un context d'ubicació) que defineix el sòcol PHP-FPM. Heu de canviar aquest valor perquè coincideixi amb la nova configuració del grup PHP-FPM que heu fet al primer pas, de manera que, continuant amb el nostre exemple, ho canviaríeu a:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
A continuació, desa i tanca també aquest fitxer. Ja gairebé has acabat.
Part 3: Reinicieu PHP-FPM i NGINX
Per aplicar els canvis de configuració que has fet, reinicia tant PHP-FPM com NGINX. Pot ser suficient tornar a carregar en comptes de reiniciar, però trobo que és una mica imprevisible, depenent de quins paràmetres es canviïn. En aquest cas concret, volia que els antics processos fills de PHP-FPM morissin immediatament, per la qual cosa calia reiniciar PHP-FPM, però per a NGINX pot ser suficient tornar a carregar. Prova-ho tu mateix.
sudo service nginx restart
I voilà, ja has acabat. Si ho has fet tot correctament, l'amfitrió virtual que has modificat ara hauria d'utilitzar el nou grup PHP-FPM i no compartir processos fills amb cap altre amfitrió virtual.
