Kako postaviti odvojene PHP-FPM bazene u NGINX
Objavio: 19. mart 2025. 21:27:25 UTC
Poslednje izmene: 12. januar 2026. 08:30:31 UTC
U ovom članku prelazim na korake konfiguracije potrebne za pokretanje više PHP-FPM bazena i povezivanje NGINKS-a sa njima preko FastCGI-a, omogućavajući razdvajanje procesa i izolaciju između virtuelnih domaćina.
How to Set Up Separate PHP-FPM Pools in NGINX
Informacije u ovom postu zasnovane su na NGINKS 1.4.6 i PHP-FPM 5.5.9 koji rade na Ubuntu Server 14.04 k64. Može ili ne mora važiti za druge verzije. (Ažuriranje: Mogu da potvrdim da od Ubuntu Server 24.04, PHP-FPM 8.3 i NGINKS 1.24.0, sva uputstva u ovom postu i dalje rade)
Postoje brojne prednosti za postavljanje više PHP-FPM podređenih procesnih bazena, a ne za pokretanje svega u istom bazenu. Bezbednost, razdvajanje / izolacija i upravljanje resursima pada na pamet kao nekoliko glavnih.
Bez obzira na to šta je vaša motivacija, ovaj post će vam pomoći da to uradite :-)
Deo KSNUMKS - Postavite novi PHP-FPM bazen
Prvo, morate da pronađete direktorijum u kome PHP-FPM čuva svoje konfiguracije bazena. Na Ubuntu 14.04, ovo je /etc/php5/fpm/pool.d podrazumevano. Verovatno već postoji fajl koji se zove www.conf, koji sadrži konfiguraciju za podrazumevani bazen. Ako niste pogledali tu datoteku pre nego što su šanse da prođete kroz nju i podesite postavke u njoj za vaše podešavanje kao podrazumevane vrednosti su za prilično slab server, ali za sada samo napravite kopiju toga, tako da ne moramo da počnemo od nule:
Naravno, zamenite "mipool" sa onim što želite da se vaš bazen zove.
Sada otvorite novu datoteku koristeći nano ili bilo koji tekst editor koji želite i podesite ga tako da odgovara vašoj svrsi. Verovatno ćete želeti da podesite brojeve procesa i eventualno koji korisnik i grupa bazen radi pod, ali dve postavke koje apsolutno morate da promenite su ime bazena i utičnica koju sluša, inače će biti u sukobu sa postojećim bazenom i stvari će prestati da rade.
Ime bazena je blizu vrha datoteke, zatvoreno u uglatim zagradama. Po defaultu je [v]. Promenite ovo na šta god želite; Predlažem isto kao što ste nazvali konfiguracioni fajl, pa zbog ovog primera promenite ga u [mypool]. Ako ga ne promenite, čini se da će PHP-FPM učitati samo prvu konfiguracionu datoteku sa tim imenom, što će verovatno pokvariti stvari.
Zatim morate da promenite utičnicu ili adresu koju slušate, što je definisano direktivom za slušanje. Po defaultu, PHP-FPM koristi Unik utičnice, tako da će vaša direktiva za slušanje verovatno izgledati ovako:
Možete ga promeniti u bilo koje validno ime koje želite, ali opet, predlažem da se držite nečeg sličnog nazivu konfiguracionog fajla, tako da možete na primer da ga podesite na:
U redu, sačuvajte datoteku i izađite iz uređivača teksta.
Deo KSNUMKS - Ažurirajte NGINKS konfiguraciju virtuelnog domaćina
Sada morate da otvorite NGINKS virtuelnu host datoteku sa FastCGI konfiguracijom koju želite da promenite u novi bazen – ili bolje rečeno, povežite se sa novom utičnicom.
Po defaultu na Ubuntu 14.04, oni se čuvaju pod / etc / ngink / sites-available, ali se mogu definisati i na drugim mestima. Verovatno najbolje znate gde se nalaze vaše virtuelne konfiguracije domaćina;-)
Otvorite odgovarajuću konfiguracionu datoteku u svom omiljenom uređivaču teksta i potražite direktivu fastcgi_pass (koja mora biti u kontekstu lokacije) koja definiše PHP-FPM utičnicu. Morate da promenite ovu vrednost tako da odgovara novoj konfiguraciji PHP-FPM bazena koju ste napravili u prvom koraku, tako da nastavljajući naš primer promenili biste ovo u:
Fastcgi_pass uniks:/var/run/php5-fpm-mypool.sock;
Zatim sačuvajte i zatvorite tu datoteku. Skoro ste završili.
Deo 3 - Ponovo pokrenite PHP-FPM i NGINKS
Da biste primenili promene konfiguracije koje ste napravili, ponovo pokrenite i PHP-FPM i NGINKS. Možda je dovoljno da se ponovo učita umesto ponovnog pokretanja, ali smatram da je to malo pogodak i promašaj, u zavisnosti od toga koja podešavanja se menjaju. U konkretnom slučaju, želeo sam da stari PHP-FPM dečji procesi odmah umru, tako da je bilo potrebno ponovno pokretanje PHP-FPM-a, ali za NGINKS ponovno učitavanje može biti dovoljno. Isprobajte sami.
sudo service nginx restart
I voila, gotovi ste. Ako ste sve uradili ispravno, virtuelni domaćin koji ste modifikovali sada bi trebalo da koristi novi PHP-FPM bazen i da ne deli dečije procese sa bilo kojim drugim virtuelnim domaćinima.
