Miklix

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.


Ova stranica je mašinski prevedena sa engleskog kako bi bila dostupna što većem broju ljudi. Nažalost, mašinsko prevođenje još nije usavršena tehnologija, pa može doći do grešaka. Ako želite, možete pogledati originalnu englesku verziju ovdje:

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:

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 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:

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

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:

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

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

Podijelite na BlueskyPodijelite na FacebookuPodijelite na LinkedIn-uPodijelite na Tumblr-uPodijeli na XPodijelite na LinkedIn-uPrikači na Pinterest

Mikkel Christensen

O autoru

Mikkel Christensen
Mikkel je kreator i vlasnik miklix.com. Ima preko 20 godina iskustva kao profesionalni kompjuterski programer/programer softvera i trenutno je zaposlen sa punim radnim vremenom u velikoj evropskoj IT korporaciji. Kada ne piše blog, svoje slobodno vrijeme provodi na širokom spektru interesovanja, hobija i aktivnosti, što se u određenoj mjeri može odraziti na različite teme koje se obrađuju na ovoj web stranici.