Miklix

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.


Ta stran je bila strojno prevedena iz angleščine, da bi bila dostopna čim večjemu številu ljudi. Žal strojno prevajanje še ni popolna tehnologija, zato lahko pride do napak. Če želite, si lahko izvirno angleško različico ogledate tukaj:

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

sudo cp www.conf mypool.conf

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:

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

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:

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

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

Delite na BlueskyDelite na FacebookuDelite na LinkedInuDelite na TumblrDelite na XDelite na LinkedInuPripni na Pinterest

Mikkel Bang Christensen

O avtorju

Mikkel Bang Christensen
Mikkel je avtor in lastnik spletne strani miklix.com. Ima več kot 20 let izkušenj kot profesionalni računalniški programer/razvijalec programske opreme in je trenutno za polni delovni čas zaposlen v veliki evropski IT korporaciji. Kadar ne piše bloga, svoj prosti čas posveča številnim interesom, hobijem in dejavnostim, kar se do neke mere odraža v raznolikosti tem na tem spletnem mestu.