Miklix

Kako postaviti odvojene PHP-FPM bazene u NGINX-u

Objavljeno: 15. februar 2025. u 11:55:28 UTC

U ovom članku, prolazim kroz korake konfiguracije potrebne za pokretanje više PHP-FPM bazena i povezivanje NGINX-a sa njima preko FastCGI-a, omogućavajući razdvajanje 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 su bazirane na NGINX 1.4.6 i PHP-FPM 5.5.9 koji rade na Ubuntu Serveru 14.04 x64. Može ili ne mora vrijediti za druge verzije. (Update: I can confirm that as of Ubuntu Server 24.04, PHP-FPM 8.3 and NGINX 1.24.0, all of the instructions in this post still works)

Postoji niz prednosti postavljanja više PHP-FPM podređenih baza procesa umjesto pokretanja svega u istom bazenu. Sigurnost, razdvajanje/izolacija i upravljanje resursima padaju mi na pamet kao nekoliko glavnih.

Bez obzira na to koja je vaša motivacija, ovaj post će vam pomoći u tome :-)


Dio 1 – Postavite novi PHP-FPM bazen

Prvo, morate locirati direktorij u kojem PHP-FPM pohranjuje svoje konfiguracije bazena. Na Ubuntu 14.04, ovo je /etc/php5/fpm/pool.d po defaultu. Vjerovatno već postoji datoteka koja se zove www.conf, koja sadrži konfiguraciju za podrazumevani bazen. Ako niste pogledali taj fajl ranije, velike su šanse da biste trebali da prođete kroz njega i podesite postavke u njemu za vaše podešavanje jer su podrazumevane vrednosti za prilično slab server, ali za sada samo napravite kopiju tako da ne moramo da počinjemo od nule:

sudo cp www.conf mypool.conf

Naravno, zamijenite "mypool" s onim što želite da se vaš bazen zove.

Sada otvorite novu datoteku koristeći nano ili bilo koji uređivač teksta koji preferirate i prilagodite je kako bi odgovarala vašoj svrsi. Vjerovatno ćete htjeti podesiti brojeve podređenih procesa i eventualno pod kojim korisnikom i grupom bazen radi, ali dvije postavke koje apsolutno morate promijeniti su ime bazena i utičnica koju sluša, inače će biti u sukobu s postojećim bazenom i stvari će prestati raditi.

Ime bazena je pri vrhu datoteke, zatvoreno u uglatim zagradama. Po defaultu je [www]. Promijenite ovo na što god želite; Predlažem isto kao što ste nazvali konfiguracijsku datoteku, pa je zbog ovog primjera promijenite u [mypool]. Ako ga ne promijenite, čini se da će PHP-FPM učitati samo prvu konfiguracijsku datoteku s tim imenom, što će vjerojatno pokvariti stvari.

Zatim morate promijeniti utičnicu ili adresu koju slušate, a koja je definirana direktivom slušanja . Po defaultu, PHP-FPM koristi Unix socketove tako da će vaša direktiva listen vjerovatno 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 konfiguracijskom nazivu datoteke, tako da ga možete na primjer podesiti na:

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

U redu, onda sačuvaj fajl i izađi iz uređivača teksta.


Dio 2 – Ažuriranje konfiguracije NGINX virtualnog hosta

Sada morate otvoriti NGINX datoteku virtualnog hosta sa FastCGI konfiguracijom koju želite promijeniti u novi bazen - ili bolje rečeno, spojiti se na novu utičnicu.

Po defaultu na Ubuntu 14.04, oni su pohranjeni pod /etc/nginx/sites-available, ali mogu biti definisani i negdje drugdje. Vjerovatno najbolje znate gdje se nalaze vaše konfiguracije virtualnog hosta ;-)

Otvorite relevantnu konfiguracijsku datoteku u vašem 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 PHP-FPM konfiguraciji bazena koju ste napravili u prvom koraku, tako da nastavljajući naš primjer promijenili biste ovo u:

fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;

Onda sačuvaj i zatvori i taj fajl. Skoro si završio.


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 je dovoljno za ponovno učitavanje umjesto ponovnog pokretanja, ali smatram da je to malo pogodak i promašaj, ovisno o tome koje su postavke promijenjene. U konkretnom slučaju, želio sam da stari PHP-FPM podređeni procesi odmah umru, tako da je ponovno pokretanje PHP-FPM bilo potrebno, ali za NGINX ponovno učitavanje može biti dovoljno. Probajte sami.

sudo service php5-fpm restart
sudo service nginx restart

I voila, gotovi ste. Ako ste sve uradili ispravno, virtualni host koji ste modificirali bi sada trebao koristiti novi PHP-FPM pool i ne dijeliti podređene procese sa bilo kojim drugim virtualnim hostovima.

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

Mikkel Bang Christensen

O autoru

Mikkel Bang 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.