Kaip nustatyti atskirus PHP-FPM telkinius NGINX
Paskelbta: 2025 m. vasario 15 d. 11:52:43 UTC
Šiame straipsnyje apžvelgsiu konfigūracijos veiksmus, reikalingus norint paleisti kelis PHP-FPM telkinius ir prijungti prie jų NGINX per FastCGI, kad būtų galima atskirti procesus ir atskirti virtualius pagrindinius kompiuterius.
How to Set Up Separate PHP-FPM Pools in NGINX
Informacija šiame įraše yra pagrįsta NGINX 1.4.6 ir PHP-FPM 5.5.9, veikiančiais Ubuntu Server 14.04 x64. Jis gali galioti arba negalioja kitoms versijoms. (Atnaujinimas: galiu patvirtinti, kad nuo Ubuntu Server 24.04, PHP-FPM 8.3 ir NGINX 1.24.0 visos šiame įraše pateiktos instrukcijos vis dar veikia)
Yra daug privalumų, kai nustatomi keli PHP-FPM antriniai procesų telkiniai, o ne viskas vykdoma tame pačiame telkinyje. Saugumas, atskyrimas / izoliacija ir išteklių valdymas yra keletas pagrindinių.
Nepriklausomai nuo jūsų motyvacijos, šis įrašas jums padės tai padaryti :-)
1 dalis – naujo PHP-FPM telkinio nustatymas
Pirmiausia turite rasti katalogą, kuriame PHP-FPM saugo savo baseino konfigūracijas. Ubuntu 14.04 pagal numatytuosius nustatymus tai yra /etc/php5/fpm/pool.d. Tikriausiai ten jau yra failas www.conf , kuriame yra numatytojo telkinio konfigūracija. Jei anksčiau nežiūrėjote į šį failą, tikriausiai turėtumėte jį peržiūrėti ir jame pakeisti nustatymus, nes numatytieji nustatymai yra gana nepakankamai galingam serveriui, tačiau kol kas tiesiog pasidarykite jo kopiją, kad nereikėtų pradėti nuo nulio:
Žinoma, „mypool“ pakeiskite taip, kaip norite, kad jūsų baseinas būtų vadinamas.
Dabar atidarykite naują failą naudodami nano arba bet kurią pageidaujamą teksto rengyklę ir pritaikykite ją savo tikslui. Tikriausiai norėsite pakoreguoti antrinių procesų numerius ir galbūt tai, kuriam vartotojui ir grupei baseinas veikia, tačiau du parametrai, kuriuos būtinai turite pakeisti, yra baseino pavadinimas ir lizdas, kurio jis klauso, kitaip jis prieštaraus esamam telkiniui ir viskas nustos veikti.
Baseino pavadinimas yra šalia failo viršaus, laužtiniuose skliaustuose. Pagal numatytuosius nustatymus tai yra [www] . Pakeiskite tai į ką norite; Siūlau tą patį, kaip pavadinote konfigūracijos failą, todėl šio pavyzdžio labui pakeiskite jį į [mypool] . Jei jo nepakeisite, atrodo, kad PHP-FPM įkels tik pirmąjį konfigūracijos failą tokiu pavadinimu, o tai greičiausiai sugadins dalykus.
Tada turite pakeisti lizdą arba adresą, kurio klausote, o tai apibrėžia klausymo direktyva. Pagal numatytuosius nustatymus PHP-FPM naudoja Unix lizdus, todėl jūsų klausymo direktyva tikriausiai atrodys taip:
Galite pakeisti jį į bet kokį galiojantį pavadinimą, bet vėlgi siūlau pasilikti kažką panašaus į konfigūracijos failo pavadinimą, kad galėtumėte, pavyzdžiui, nustatyti:
Gerai, išsaugokite failą ir išeikite iš teksto rengyklės.
2 dalis – Atnaujinkite NGINX virtualiojo pagrindinio kompiuterio konfigūraciją
Dabar turite atidaryti NGINX virtualiojo pagrindinio kompiuterio failą su FastCGI konfigūracija, kurią norite pakeisti į naują telkinį, arba, tiksliau, prisijungti prie naujojo lizdo.
Pagal numatytuosius nustatymus Ubuntu 14.04 versijoje jie saugomi /etc/nginx/sites-available, bet gali būti apibrėžti ir kitur. Jūs tikriausiai geriausiai žinote, kur yra jūsų virtualaus pagrindinio kompiuterio konfigūracijos ;-)
Atidarykite atitinkamą konfigūracijos failą savo mėgstamoje teksto rengyklėje ir ieškokite fastcgi_pass direktyvos (kuri turi būti vietos kontekste), apibrėžiančios PHP-FPM lizdą. Turite pakeisti šią reikšmę, kad ji atitiktų naują PHP-FPM telkinio konfigūraciją, kurią atlikote atlikdami pirmąjį veiksmą, todėl tęsdami pavyzdį pakeiskite ją į:
fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Tada išsaugokite ir uždarykite tą failą. Beveik baigėte.
3 dalis – iš naujo paleiskite PHP-FPM ir NGINX
Norėdami pritaikyti atliktus konfigūracijos pakeitimus, iš naujo paleiskite PHP-FPM ir NGINX. Gali pakakti įkelti iš naujo , o ne paleisti iš naujo , bet manau, kad tai šiek tiek nukentėjo ir praleista, atsižvelgiant į tai, kurie nustatymai buvo pakeisti. Konkrečiu atveju norėjau, kad seni PHP-FPM antriniai procesai iš karto numirtų, todėl reikėjo iš naujo paleisti PHP-FPM, bet NGINX gali pakakti perkrauti. Išbandykite patys.
sudo service nginx restart
Ir voila, baigėte. Jei viską padarėte teisingai, pakeistas virtualusis kompiuteris dabar turėtų naudoti naują PHP-FPM telkinį, o ne dalytis antriniais procesais su jokiais kitais virtualiais pagrindiniais kompiuteriais.