Kako nastaviti ločena območja PHP-FPM v NGINX
Objavljeno: 15. februar 2025 ob 11:53:04 dop. UTC
V tem članku bom pregledal konfiguracijske korake, potrebne za izvajanje več skupin PHP-FPM in povezovanje 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 Server 14.04 x64. Lahko velja ali ne velja za druge različice. (Posodobitev: lahko potrdim, da od Ubuntu Server 24.04, PHP-FPM 8.3 in NGINX 1.24.0 vsa navodila v tej objavi še vedno delujejo)
Nastavitev več bazenov podrejenih procesov PHP-FPM ima številne prednosti namesto izvajanja vseh v istem bazenu. Varnost, ločevanje/izolacija in upravljanje virov prihajajo na misel kot nekaj glavnih.
Ne glede na vašo motivacijo vam bo ta objava pomagala pri tem :-)
1. del – Nastavitev novega bazena PHP-FPM
Najprej morate poiskati imenik, kjer PHP-FPM shranjuje svoje 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 za privzeti bazen. Če te datoteke še niste pogledali, je velika verjetnost, da bi jo morali pregledati in prilagoditi nastavitve v njej za vašo nastavitev, saj so privzete vrednosti za strežnik s precej premajhno zmogljivostjo, a za zdaj samo naredite njeno kopijo, da nam ne bo treba začeti iz nič:
Seveda zamenjajte »mypool« s tistim, kar želite, da se imenuje vaš bazen.
Zdaj odprite novo datoteko z nano ali katerim koli urejevalnikom besedila, ki ga želite, in jo prilagodite svojemu namenu. Verjetno boste želeli prilagoditi številke podrejenih procesov in po možnosti, pod katerim uporabnikom in skupino deluje bazen, vendar morate spremeniti dve nastavitvi, ki ju morate nujno spremeniti, ime bazena in vtičnico, ki jo posluša, sicer bo prišlo v konflikt z obstoječim bazenom in stvari bodo prenehale delovati.
Ime bazena je blizu vrha datoteke in je v oglatih oklepajih. Privzeto je [www] . Spremenite to v karkoli želite; Predlagam enako, kot ste poimenovali konfiguracijsko datoteko, zato jo za namen 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 pokvarilo stvari.
Nato morate spremeniti vtičnico ali naslov, ki ga poslušate, kar je opredeljeno z direktivo poslušanja . PHP-FPM privzeto uporablja vtičnice Unix, zato bo vaša direktiva poslušanja verjetno videti takole:
Lahko ga spremenite v poljubno veljavno ime, vendar ponovno predlagam, da se držite nečesa podobnega imenu konfiguracijske datoteke, tako da ga lahko na primer nastavite na:
V redu, potem shranite datoteko in zaprite urejevalnik besedila.
2. del – Posodobite konfiguracijo virtualnega gostitelja NGINX
Zdaj morate odpreti datoteko navideznega gostitelja NGINX s konfiguracijo FastCGI, ki jo želite spremeniti v novo skupino – oziroma se povežite z novo vtičnico.
Privzeto v Ubuntu 14.04 so ti shranjeni pod /etc/nginx/sites-available, vendar jih je mogoče definirati tudi drugje. Verjetno najbolje veste, kje se nahajajo vaše konfiguracije virtualnega gostitelja ;-)
Odprite ustrezno konfiguracijsko datoteko v svojem priljubljenem 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 ujema z novo konfiguracijo bazena PHP-FPM, ki ste jo naredili v prvem koraku, tako da bi z nadaljevanjem 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 – Znova zaženite PHP-FPM in NGINX
Če želite uporabiti spremembe konfiguracije, ki ste jih naredili, znova zaženite PHP-FPM in NGINX. Morda je dovolj, da znova naložite namesto ponovnega zagona , vendar se mi zdi, da je nekoliko zadet, odvisno od tega, katere nastavitve so spremenjene. V konkretnem primeru sem želel, da stari podrejeni procesi PHP-FPM takoj umrejo, zato je bil potreben ponovni zagon PHP-FPM, vendar za NGINX morda zadostuje ponovno nalaganje. 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 novo področje PHP-FPM in ne bi smel deliti podrejenih procesov z drugimi virtualnimi gostitelji.