Miklix

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.


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

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

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 nazivu konfiguracijske datoteke, tako da ga možete, na primjer, postaviti na:

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

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

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

Mikkel Bang Christensen

O autoru

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