Miklix

Cum să configurați pool-uri PHP-FPM separate în NGINX

Publicat: 15 februarie 2025 la 11:52:57 UTC

În acest articol, trec peste pașii de configurare necesari pentru a rula mai multe pool-uri PHP-FPM și pentru a conecta NGINX la acestea prin FastCGI, permițând separarea proceselor și izolarea între gazdele virtuale.


Această pagină a fost tradusă automat din limba engleză pentru a o face accesibilă cât mai multor persoane. Din păcate, traducerea automată nu este încă o tehnologie perfecționată, astfel încât pot apărea erori. Dacă preferați, puteți vizualiza versiunea originală în limba engleză aici:

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. Poate fi valabil sau nu 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 a configura mai multe pool-uri de procese copii PHP-FPM, în loc să rulați totul în același pool. Securitatea, separarea/izolarea și gestionarea resurselor îmi vin în minte ca fiind câteva dintre cele mai importante.

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 își stochează configurațiile pool-ului. Pe Ubuntu 14.04, acesta este implicit /etc/php5/fpm/pool.d. Probabil că există deja un fișier numit www.conf , care deține configurația pentru pool-ul implicit. Dacă nu v-ați uitat la acel fișier înainte de a exista șanse, ar trebui să-l parcurgeți și să modificați setările din el pentru configurarea dvs., deoarece valorile implicite sunt pentru un server destul de slab alimentat, dar pentru moment faceți o copie a acestuia, astfel încât să nu fie nevoie să începem de la zero:

sudo cp www.conf mypool.conf

Desigur, înlocuiți „mypool” cu orice doriți să se numească piscina dvs.

Acum deschideți noul fișier folosind nano sau orice editor de text pe care îl preferați și ajustați-l pentru a se potrivi scopului dvs. Probabil că veți dori să modificați numerele de proces copil și, eventual, în ce utilizator și grup rulează pool-ul, dar cele două setări pe care trebuie neapărat să le modificați sunt numele pool-ului și socket-ul pe care îl ascultă, altfel va intra în conflict cu pool-ul existent și lucrurile nu vor mai funcționa.

Numele pool-ului este aproape de partea de sus a fișierului, cuprins între paranteze drepte. Implicit este [www] . Schimbați-l în ceea ce doriți; Vă sugerez același lucru cu care ați numit fișierul de configurare, așa că, de dragul acestui 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ă rupă lucrurile.

Apoi trebuie să schimbați socket-ul sau adresa pe care o ascultați, care este definită de directiva listen . În mod implicit, PHP-FPM utilizează socket-uri Unix, astfel încât directiva dvs. de ascultare va arăta probabil astfel:

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

Îl puteți schimba cu orice nume valid doriți, dar, din nou, vă sugerez să rămâneți cu ceva similar cu numele fișierului de configurare, astfel încât să îl puteți seta, de exemplu, la:

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

În regulă, salvați fișierul și ieșiți din editorul de text.


Partea 2 – Actualizați configurația 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ă știi cel mai bine unde se află configurațiile de gazdă virtuală ;-)

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 socket-ul PHP-FPM. Trebuie să modificați această valoare astfel încât să se potrivească cu noua configurație a pool-ului PHP-FPM pe care ați făcut-o la pasul unu, așa că continuând exemplul nostru, veți schimba aceasta în:

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

Apoi salvați și închideți și acel fișier. Aproape ai terminat acum.


Partea 3 – Reporniți PHP-FPM și NGINX

Pentru a aplica modificările de configurare pe care le-ați făcut, reporniți atât PHP-FPM, cât și NGINX. Poate fi suficient să reîncărcați în loc să reporniți , dar mi se pare un pic cam greșit, în funcție de setările care sunt modificate. În cazul particular, am vrut ca vechile procese copil PHP-FPM să dispară imediat, așa că era necesară repornirea PHP-FPM, dar pentru NGINX o reîncărcare poate fi suficientă. Încercați-l singur.

sudo service php5-fpm restart
sudo service nginx restart

Și voila, ai terminat. Dacă ați făcut totul corect, gazda virtuală pe care ați modificat-o ar trebui să folosească acum noul pool PHP-FPM și să nu partajeze procesele copil cu alte gazde virtuale.

Distribuie pe BlueskyDistribuie pe FacebookDistribuie pe LinkedInDistribuie pe TumblrDistribuie pe XDistribuie pe LinkedInPin pe Pinterest

Mikkel Bang Christensen

Despre autor

Mikkel Bang Christensen
Mikkel este creatorul și proprietarul miklix.com. El are peste 20 de ani de experiență ca programator de calculatoare/dezvoltator software profesionist și este în prezent angajat cu normă întreagă pentru o mare corporație europeană de IT. Atunci când nu scrie pe blog, își petrece timpul liber cu o gamă largă de interese, hobby-uri și activități, care se pot reflecta într-o anumită măsură în varietatea de subiecte abordate pe acest site.