Miklix

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.


Ova je stranica strojno prevedena s engleskog kako bi bila dostupna što većem broju ljudi. Nažalost, strojno prevođenje još nije usavršena tehnologija pa se mogu pojaviti pogreške. Ako želite, izvornu englesku verziju možete pogledati ovdje:

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:

sudo cp www.conf mypool.conf

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:

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

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:

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

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 php5-fpm restart
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.

Podijeli na BlueskyPodijelite na FacebookuPodijelite na LinkedInuPodijelite na TumblrPodijeli na XPodijelite na LinkedInuPrikvači na Pinterest

Mikkel Christensen

O autoru

Mikkel Christensen
Mikkel je kreator i vlasnik miklix.com. Ima više od 20 godina iskustva kao profesionalni računalni programer/razvijač softvera i trenutno je zaposlen na puno radno vrijeme za veliku europsku IT korporaciju. Kada ne piše blog, svoje slobodno vrijeme provodi na široku lepezu interesa, hobija i aktivnosti, što se u određenoj mjeri može odraziti na različite teme obrađene na ovoj web stranici.