Kako nastaviti ločena območja PHP-FPM v NGINX
Objavljeno: 15. februar 2025 ob 11:53:04 dop. UTC
Nazadnje posodobljeno: 12. januar 2026 ob 8:30:07 dop. UTC
V tem članku bom pregledal korake konfiguracije, potrebne za zagon več PHP-FPM bazenov in povezavo NGINX z njimi prek FastCGI, kar omogoča ločevanje in izolacijo procesov med virtualnimi gostitelji.
How to Set Up Separate PHP-FPM Pools in NGINX
Informacije v tej objavi temeljijo na NGINX 1.4.6 in PHP-FPM 5.5.9, ki se izvajata na Ubuntu Serverju 14.04 x64. Morda pa ne veljajo za druge različice. (Posodobitev: Lahko potrdim, da od Ubuntu Serverja 24.04, PHP-FPM 8.3 in NGINX 1.24.0 vsa navodila v tej objavi še vedno delujejo.)
Nastavitev več podprocesnih bazenov PHP-FPM ima številne prednosti v primerjavi z izvajanjem vsega v istem bazenu. Kot nekatere glavne prednosti se spomnimo varnosti, ločevanja/izolacije in upravljanja virov.
Ne glede na to, kakšna je vaša motivacija, vam bo ta objava pomagala :-)
1. del – Nastavitev novega bazena PHP-FPM
Najprej morate poiskati imenik, kjer PHP-FPM shranjuje konfiguracije bazena. V Ubuntu 14.04 je to privzeto /etc/php5/fpm/pool.d. Tam verjetno že obstaja datoteka z imenom www.conf, ki vsebuje konfiguracijo privzetega bazena. Če te datoteke še niste pregledali, jo verjetno morate pregledati in prilagoditi nastavitve za svojo nastavitev, saj so privzete nastavitve za precej šibkejši strežnik, zaenkrat pa le naredite kopijo, da nam ni treba začeti od začetka:
Seveda zamenjajte »mypool« s katerim koli imenom, pod katerim želite, da se vaš bazen imenuje.
Zdaj odprite novo datoteko z uporabo programa nano ali katerega koli drugega urejevalnika besedil in jo prilagodite svojemu namenu. Verjetno boste želeli prilagoditi številke podrejenih procesov in morda tudi, pod katerim uporabnikom in skupino se bazen izvaja, vendar morate nujno spremeniti dve nastavitvi: ime bazena in vtičnico, ki jo posluša, sicer bo prišlo do konflikta z obstoječim bazenom in sistem ne bo več deloval.
Ime bazena je blizu vrha datoteke, v oglatih oklepajih. Privzeto je [www]. Spremenite ga v karkoli želite; predlagam enako, kot ste poimenovali konfiguracijsko datoteko, zato ga za namene tega primera spremenite v [mypool]. Če ga ne spremenite, se zdi, da bo PHP-FPM naložil samo prvo konfiguracijsko datoteko s tem imenom, kar bo verjetno povzročilo težave.
Nato morate spremeniti vtičnico ali naslov, ki ga poslušate, kar je definirano z direktivo listen. PHP-FPM privzeto uporablja Unixove vtičnice, zato bo vaša direktiva listen verjetno videti takole:
Lahko ga spremenite v poljubno veljavno ime, vendar spet predlagam, da se držite nečesa podobnega imenu konfiguracijske datoteke, tako da ga lahko na primer nastavite na:
V redu, shranite datoteko in zaprite urejevalnik besedil.
2. del – Posodobitev konfiguracije virtualnega gostitelja NGINX
Zdaj morate odpreti datoteko virtualnega gostitelja NGINX s konfiguracijo FastCGI, ki jo želite spremeniti v nov bazen – oziroma se povezati z novo vtičnico.
Ubuntuju 14.04 so te privzeto shranjene v /etc/nginx/sites-available, vendar jih je mogoče definirati tudi drugje. Verjetno sami najbolje veste, kje se nahajajo konfiguracije vašega virtualnega gostitelja ;-)
Odprite ustrezno konfiguracijsko datoteko v svojem najljubšem urejevalniku besedil in poiščite direktivo fastcgi_pass (ki mora biti v kontekstu lokacije), ki definira vtičnico PHP-FPM. To vrednost morate spremeniti tako, da se bo ujemala z novo konfiguracijo bazena PHP-FPM, ki ste jo naredili v prvem koraku, zato bi v nadaljevanju našega primera to spremenili v:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Nato shranite in zaprite tudi to datoteko. Skoraj ste končali.
3. del – Ponovni zagon PHP-FPM in NGINX
Če želite uporabiti spremembe konfiguracije, ki ste jih naredili, znova zaženite PHP-FPM in NGINX. Morda bo dovolj, da namesto ponovnega zagona preprosto zaženete PHP-FPM, vendar se mi zdi, da je to nekoliko neenakomerno, odvisno od tega, katere nastavitve so spremenjene. V konkretnem primeru sem želel, da se stari podrejeni procesi PHP-FPM takoj ugasnejo, zato je bil potreben ponovni zagon PHP-FPM, za NGINX pa bo morda zadostoval že ponovni zagon. Preizkusite sami.
sudo service nginx restart
In voila, končali ste. Če ste vse naredili pravilno, bi moral virtualni gostitelj, ki ste ga spremenili, zdaj uporabljati novi bazen PHP-FPM in ne bi smel deliti podrejenih procesov z drugimi virtualnimi gostitelji.
