Kako postaviti zasebne PHP-FPM skupove u NGINX-u
Objavljeno: 15. veljače 2025. u 11:55:31 UTC
U ovom članku prelazim na konfiguracijske korake potrebne za pokretanje višestrukih PHP-FPM skupova i povezivanje NGINX-a s njima putem FastCGI-ja, omogućujući 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. Može, ali i ne mora vrijediti 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)
Postoje brojne prednosti postavljanja više PHP-FPM skupova podređenih procesa umjesto pokretanja svega u istom skupu. Sigurnost, odvajanje/izolacija i upravljanje resursima padaju na pamet kao nekoliko glavnih.
Bez obzira na vašu motivaciju, ovaj će vam post pomoći u tome :-)
Dio 1 – Postavite novi PHP-FPM skup
Prvo morate pronaći direktorij u kojem PHP-FPM pohranjuje svoje konfiguracije skupa. Na Ubuntu 14.04, ovo je /etc/php5/fpm/pool.d prema zadanim postavkama. Tamo vjerojatno već postoji datoteka pod nazivom www.conf , koja sadrži konfiguraciju za zadano spremište. Ako prije niste pogledali tu datoteku, velike su šanse da biste je trebali pregledati i prilagoditi postavke u njoj za svoje postavke jer su zadane za prilično slab poslužitelj, ali za sada samo napravite njezinu kopiju kako ne bismo morali početi od nule:
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 želite i prilagodite je svojoj namjeni. Vjerojatno ćete htjeti podesiti brojeve podređenih procesa i eventualno pod kojim korisnikom i grupom bazen radi, ali dvije postavke koje apsolutno morate promijeniti su naziv bazena i utičnica koju sluša, inače će doći u sukob s postojećim bazenom i stvari će prestati raditi.
Naziv bazena nalazi se pri vrhu datoteke, u uglatim zagradama. Zadano je [www] . Promijenite ovo u što god želite; Predlažem isto kao što ste nazvali konfiguracijsku datoteku, pa je 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 pokvariti stvari.
Zatim morate promijeniti utičnicu ili adresu koju slušate, što je definirano direktivom listen . Prema zadanim postavkama PHP-FPM koristi Unix utičnice tako da će vaša direktiva za slušanje vjerojatno izgledati ovako:
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 nazivu konfiguracijske datoteke, tako da ga možete, na primjer, postaviti na:
U redu, onda spremite datoteku i izađite iz uređivača teksta.
Dio 2 – Ažurirajte konfiguraciju NGINX virtualnog hosta
Sada trebate otvoriti NGINX datoteku virtualnog hosta s FastCGI konfiguracijom koju želite promijeniti u novi skup – ili bolje rečeno, spojite se na novi socket.
Prema zadanim postavkama na Ubuntu 14.04 oni su pohranjeni pod /etc/nginx/sites-available, ali se mogu definirati i drugdje. Vi vjerojatno najbolje znate gdje se nalaze vaše konfiguracije 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 skupa PHP-FPM koju ste napravili u prvom koraku, tako da nastavljate naš primjer, promijenili biste ovo u:
fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Zatim spremite i zatvorite i tu datoteku. Skoro ste gotovi.
Dio 3 – Ponovno pokrenite PHP-FPM i NGINX
Da biste primijenili promjene konfiguracije koje ste napravili, ponovno pokrenite PHP-FPM i NGINX. Možda će biti dovoljno ponovno učitati umjesto ponovnog pokretanja , ali smatram da je to malo pogrešno, ovisno o tome koje su postavke promijenjene. U konkretnom slučaju, želio sam da stari PHP-FPM podređeni procesi odmah umru, 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 učinili ispravno, virtualni host koji ste izmijenili sada bi trebao koristiti novi PHP-FPM skup i ne bi dijelio podređene procese s drugim virtualnim hostovima.