Kako postaviti zasebne PHP-FPM skupove u NGINX-u
Objavljeno: 15. veljače 2025. u 11:55:31 UTC
Zadnje ažuriranje: 12. siječnja 2026. u 08:30:22 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, što omogućuje odvajanje procesa i izolaciju između virtualnih hostova.
How to Set Up Separate PHP-FPM Pools in NGINX
Informacije u ovom postu temelje se 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, sve upute 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, ova objava će vam pomoći u tome :-)
1. dio – Postavljanje novog PHP-FPM bazena
Prvo morate pronaći direktorij u kojem PHP-FPM pohranjuje konfiguracije zadanog bazena. Na Ubuntu 14.04 to je prema zadanim postavkama /etc/php5/fpm/pool.d. Vjerojatno već postoji datoteka pod nazivom www.conf koja sadrži konfiguraciju zadanog bazena. Ako prije niste pogledali tu datoteku, vjerojatno biste je trebali pregledati i prilagoditi postavke za svoju konfiguraciju jer su zadane postavke za prilično slab poslužitelj, 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 pomoću programa nano ili bilo kojeg drugog tekstualnog editora i prilagodite je svojoj svrsi. Vjerojatno ćete htjeti prilagoditi brojeve podređenih procesa 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 nalazi se pri vrhu datoteke, zatvoren u uglate zagrade. Prema zadanim postavkama je [www]. Promijenite ga u što god želite; predlažem isto kao što ste nazvali konfiguracijsku datoteku, pa ga 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 vjerojatno uzrokovati probleme.
Zatim morate promijeniti socket ili adresu koju slušate, što je definirano direktivom listen. Prema zadanim postavkama, PHP-FPM koristi Unix sockete pa će vaša direktiva listen vjerojatno izgledati ovako:
Možete ga promijeniti u bilo koje valjano ime koje želite, ali opet, predlažem da se držite nečeg sličnog nazivu konfiguracijske datoteke, pa ga možete na primjer postaviti na:
U redu, spremite datoteku i izađite iz uređivača teksta.
2. dio – Ažuriranje konfiguracije virtualnog hosta NGINX-a
Sada morate otvoriti NGINX datoteku virtualnog hosta s FastCGI konfiguracijom koju želite promijeniti u novi pool - ili bolje rečeno, spojiti se na novi socket.
Prema zadanim postavkama na Ubuntuu 14.04, ove se postavke pohranjuju u /etc/nginx/sites-available, ali se mogu definirati i negdje drugdje. Vjerojatno vi najbolje znate gdje se nalaze konfiguracije vašeg virtualnog hosta ;-)
Otvorite odgovarajuću konfiguracijsku datoteku u svom omiljenom uređivaču teksta i potražite direktivu fastcgi_pass (koja mora biti u kontekstu lokacije) koja definira PHP-FPM utičnicu. Morate promijeniti ovu vrijednost tako da odgovara novoj konfiguraciji PHP-FPM bazena koju ste napravili u prvom koraku, pa biste, nastavljajući naš primjer, ovo promijenili u:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Zatim spremite i zatvorite i tu datoteku. Gotovo ste gotovi.
Dio 3 – Ponovno pokretanje PHP-FPM-a i NGINX-a
Da biste primijenili promjene konfiguracije koje ste napravili, ponovno pokrenite i PHP-FPM i NGINX. Možda će biti dovoljno ponovno pokretanje umjesto ponovnog pokretanja, ali smatram da je to pomalo nepredvidivo, ovisno o tome koje se postavke mijenjaju. U konkretnom slučaju, htio sam da stari PHP-FPM podređeni procesi odmah ugase, pa 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 ispravno napravili, virtualni host koji ste modificirali sada bi trebao koristiti novi PHP-FPM pool i ne bi trebao dijeliti podprocese s drugim virtualnim hostovima.
