Kako postaviti odvojene PHP-FPM bazene u NGINX-u
Objavljeno: 15. februar 2025. u 11:55:28 UTC
Posljednje ažurirano: 12. januar 2026. u 08:30:21 UTC
U ovom članku, prolazim kroz korake konfiguracije potrebne za pokretanje više PHP-FPM pool-ova i povezivanje NGINX-a s njima putem FastCGI-ja, omogućavajući odvajanje procesa i izolaciju između virtualnih hostova.
How to Set Up Separate PHP-FPM Pools in NGINX
Informacije u ovom postu se zasnivaju na NGINX 1.4.6 i PHP-FPM 5.5.9 koji rade na Ubuntu Serveru 14.04 x64. Mogu, ali i ne moraju biti važeće za druge verzije. (Ažuriranje: Mogu potvrditi da od Ubuntu Servera 24.04, PHP-FPM 8.3 i NGINX 1.24.0, sva uputstva u ovom postu i dalje rade)
Postoji niz prednosti postavljanja više PHP-FPM podprocesnih skupova u odnosu na pokretanje svega u istom skupu. Sigurnost, odvajanje/izolacija i upravljanje resursima padaju na pamet kao neke od glavnih.
Bez obzira na vašu motivaciju, ovaj post će vam pomoći da to i uradite :-)
Dio 1 – Postavljanje novog PHP-FPM bazena
Prvo, trebate pronaći direktorij u kojem PHP-FPM pohranjuje svoje konfiguracije bazena. Na Ubuntu 14.04, to je po zadanim postavkama /etc/php5/fpm/pool.d. Vjerovatno već postoji datoteka pod nazivom www.conf, koja sadrži konfiguraciju zadanog bazena. Ako niste prije pogledali tu datoteku, vjerovatno biste je trebali pregledati i prilagoditi postavke za svoju konfiguraciju, jer su zadane vrijednosti za prilično slab server, ali za sada samo napravite kopiju kako ne bismo morali početi ispočetka:
Naravno, zamijenite „mypool“ s bilo kojim imenom pod kojim želite da se vaš bazen zove.
Sada otvorite novu datoteku koristeći nano ili bilo koji drugi tekstualni editor koji preferirate i prilagodite je svojoj svrsi. Vjerovatno ćete htjeti podesiti brojeve podprocesa i eventualno pod kojim korisnikom i grupom se pool pokreće, ali dvije postavke koje apsolutno morate promijeniti su naziv poola i socket na koji sluša, inače će doći do sukoba s postojećim poolom i stvari će prestati raditi.
Naziv bazena (pool) se nalazi pri vrhu datoteke, u uglastim zagradama. Podrazumevano je [www]. Promijenite ovo u šta god želite; predlažem isto kao što ste nazvali konfiguracionu datoteku, pa za potrebe ovog primjera promijenite u [mypool]. Ako ga ne promijenite, čini se da će PHP-FPM učitati samo prvu konfiguracijsku datoteku s tim nazivom, što će vjerovatno uzrokovati probleme.
Zatim trebate promijeniti socket ili adresu koju slušate, što je definirano direktivom listen. Podrazumevano, PHP-FPM koristi Unix sockete, tako da će vaša direktiva listen vjerovatno izgledati ovako:
Možete ga promijeniti u bilo koje važeće ime koje želite, ali opet, predlažem da se držite nečeg sličnog imenu konfiguracijske datoteke, tako da ga možete, na primjer, postaviti na:
U redu, sačuvajte datoteku i izađite iz uređivača teksta.
Dio 2 – Ažuriranje konfiguracije virtualnog hosta NGINX
Sada trebate otvoriti NGINX datoteku virtualnog hosta s FastCGI konfiguracijom koju želite promijeniti u novi pool – ili bolje rečeno, povezati se na novi socket.
Podrazumevano na Ubuntu 14.04, ovo se čuva u /etc/nginx/sites-available, ali se može definisati i na drugom mestu. Vjerovatno vi najbolje znate gde se nalaze konfiguracije vašeg virtuelnog hosta ;-)
Otvorite relevantnu konfiguracijsku datoteku u vašem omiljenom tekstualnom editoru i potražite direktivu fastcgi_pass (koja mora biti u kontekstu lokacije) koja definira PHP-FPM socket. Morate promijeniti ovu vrijednost tako da odgovara novoj konfiguraciji PHP-FPM poola koju ste napravili u prvom koraku, tako da biste, nastavljajući naš primjer, ovo promijenili u:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Zatim sačuvajte i zatvorite i tu datoteku. Sad ste skoro završili.
Dio 3 – Ponovno pokretanje PHP-FPM-a i NGINX-a
Da biste primijenili promjene konfiguracije koje ste napravili, ponovo pokrenite i PHP-FPM i NGINX. Možda će biti dovoljno ponovo pokrenuti sistem umjesto ponovnog pokretanja, ali smatram da je to pomalo nepredvidivo, ovisno o tome koje se postavke mijenjaju. U konkretnom slučaju, želio sam da stari PHP-FPM podprocesi odmah ugase sistem, tako da je bilo potrebno ponovno pokretanje PHP-FPM-a, ali za NGINX ponovno učitavanje može biti dovoljno. Isprobajte sami.
sudo service nginx restart
I voila, gotovi ste. Ako ste sve uradili ispravno, virtuelni host koji ste modificirali sada bi trebao koristiti novi PHP-FPM pool i ne bi trebao dijeliti podprocese ni sa jednim drugim virtuelnim hostom.
