Cum să configurați pool-uri PHP-FPM separate în NGINX
Publicat: 15 februarie 2025 la 11:52:57 UTC
Ultima actualizare: 12 ianuarie 2026 la 08:30:05 UTC
În acest articol, voi trece în revistă pașii de configurare necesari pentru a rula mai multe pool-uri PHP-FPM și a conecta NGINX la acestea prin FastCGI, permițând separarea proceselor și izolarea între gazdele virtuale.
How to Set Up Separate PHP-FPM Pools in NGINX
Informațiile din această postare se bazează pe NGINX 1.4.6 și PHP-FPM 5.5.9 care rulează pe Ubuntu Server 14.04 x64. Este posibil să fie sau nu valabile pentru alte versiuni. (Actualizare: Pot confirma că, începând cu Ubuntu Server 24.04, PHP-FPM 8.3 și NGINX 1.24.0, toate instrucțiunile din această postare încă funcționează)
Există o serie de avantaje în configurarea mai multor pool-uri de procese fiu PHP-FPM, în loc să rulați totul în același pool. Securitatea, separarea/izolarea și gestionarea resurselor sunt câteva dintre cele mai importante avantaje.
Indiferent de motivația ta, această postare te va ajuta să o faci :-)
Partea 1 – Configurați un nou pool PHP-FPM
Mai întâi, trebuie să localizați directorul în care PHP-FPM stochează configurațiile pool-ului său. Pe Ubuntu 14.04, acesta este /etc/php5/fpm/pool.d în mod implicit. Probabil că există deja un fișier acolo numit www.conf, care conține configurația pentru pool-ul implicit. Dacă nu ați consultat fișierul respectiv până acum, probabil că ar trebui să îl parcurgeți și să modificați setările pentru configurația dvs., deoarece setările implicite sunt pentru un server destul de slab puternic, dar deocamdată faceți doar o copie a acestuia, astfel încât să nu fie nevoie să o luăm de la capăt:
Desigur, înlocuiți „mypool” cu orice nume doriți să se numească pool-ul dvs.
Acum deschideți noul fișier folosind nano sau orice editor de text preferați și ajustați-l pentru a se potrivi scopului dumneavoastră. Probabil veți dori să modificați numerele proceselor copil și, eventual, utilizatorul și grupul sub care rulează pool-ul, dar cele două setări pe care trebuie neapărat să le schimbați sunt numele pool-ului și socket-ul la care ascultă, altfel va intra în conflict cu pool-ul existent și lucrurile vor înceta să funcționeze.
Numele pool-ului se află în partea de sus a fișierului, între paranteze pătrate. Implicit este [www]. Schimbați-l cu orice doriți; sugerez același nume pe care l-ați dat fișierului de configurare, așa că, pentru acest exemplu, schimbați-l în [mypool]. Dacă nu îl schimbați, se pare că PHP-FPM va încărca doar primul fișier de configurare cu acel nume, ceea ce este probabil să provoace erori.
Apoi trebuie să schimbați socket-ul sau adresa la care ascultați, care este definită de directiva listen. În mod implicit, PHP-FPM utilizează socket-uri Unix, așa că directiva listen va arăta probabil astfel:
Îl poți schimba cu orice nume valid dorești, dar, din nou, îți sugerez să rămâi la ceva similar cu numele fișierului de configurare, de exemplu, l-ai putea seta la:
Bine, atunci salvează fișierul și ieși din editorul de text.
Partea 2 – Actualizarea configurației gazdei virtuale NGINX
Acum trebuie să deschideți fișierul gazdă virtuală NGINX cu configurația FastCGI pe care doriți să o modificați la un nou pool - sau, mai degrabă, să vă conectați la noul socket.
În mod implicit, pe Ubuntu 14.04, acestea sunt stocate în /etc/nginx/sites-available, dar pot fi definite și în altă parte. Probabil că cel mai bine știi unde se află configurațiile gazdei tale virtuale ;-)
Deschideți fișierul de configurare relevant în editorul de text preferat și căutați directiva fastcgi_pass (care trebuie să fie într-un context de locație) care definește socketul PHP-FPM. Trebuie să modificați această valoare astfel încât să corespundă cu noua configurație a pool-ului PHP-FPM pe care ați făcut-o la pasul unu, așadar, continuând exemplul nostru, ați schimba aceasta la:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Apoi salvați și închideți și acel fișier. Aproape ați terminat acum.
Partea 3 – Reporniți PHP-FPM și NGINX
Pentru a aplica modificările de configurație pe care le-ați făcut, reporniți atât PHP-FPM, cât și NGINX. Ar putea fi suficient să reîncărcați în loc să reporniți, dar mi se pare că este puțin imprevizibil, în funcție de setările modificate. În acest caz particular, am vrut ca vechile procese secundare PHP-FPM să dispară imediat, așa că a fost necesară repornirea PHP-FPM, dar pentru NGINX o reîncărcare ar putea fi suficientă. Încercați singuri.
sudo service nginx restart
Și voila, ați terminat. Dacă ați făcut totul corect, gazda virtuală pe care ați modificat-o ar trebui să utilizeze acum noul pool PHP-FPM și să nu partajeze procese copil cu alte gazde virtuale.
