Miklix

Ako nastaviť samostatné fondy PHP-FPM v NGINX

Publikované: 15. februára 2025 o 11:53:03 UTC

V tomto článku sa venujem konfiguračným krokom potrebným na spustenie viacerých oblastí PHP-FPM a pripojenie NGINX k nim cez FastCGI, čo umožňuje oddelenie procesov a izoláciu medzi virtuálnymi hostiteľmi.


Táto stránka bola strojovo preložená z angličtiny, aby bola prístupná čo najväčšiemu počtu ľudí. Žiaľ, strojový preklad ešte nie je dokonalá technológia, takže sa môžu vyskytnúť chyby. Ak chcete, môžete si pozrieť pôvodnú anglickú verziu tu:

How to Set Up Separate PHP-FPM Pools in NGINX

Informácie v tomto príspevku sú založené na NGINX 1.4.6 a PHP-FPM 5.5.9 bežiacich na Ubuntu Server 14.04 x64. Môže a nemusí platiť pre iné verzie. (Aktualizácia: Môžem potvrdiť, že od Ubuntu Server 24.04, PHP-FPM 8.3 a NGINX 1.24.0 všetky pokyny v tomto príspevku stále fungujú)

Existuje množstvo výhod nastavenia viacerých oblastí podriadených procesov PHP-FPM namiesto toho, aby sa všetko spúšťalo v tej istej oblasti. Bezpečnosť, oddelenie/izolácia a riadenie zdrojov sa vynárajú na myseľ ako niekoľko hlavných.

Bez ohľadu na to, aká je vaša motivácia, tento príspevok vám to pomôže :-)


Časť 1 – Nastavenie nového fondu PHP-FPM

Najprv musíte nájsť adresár, kde PHP-FPM ukladá svoje konfigurácie fondu. Na Ubuntu 14.04 je to predvolene /etc/php5/fpm/pool.d. Pravdepodobne tam už existuje súbor s názvom www.conf , ktorý obsahuje konfiguráciu pre predvolený fond. Ak ste si tento súbor predtým nepozreli, je pravdepodobné, že by ste si ho mali prejsť a upraviť v ňom nastavenia pre svoje nastavenie, pretože predvolené nastavenia sú pre server s pomerne slabým výkonom, ale zatiaľ si vytvorte jeho kópiu, aby sme nemuseli začínať od nuly:

sudo cp www.conf mypool.conf

Samozrejme, nahraďte „mypool“ akokoľvek chcete, aby sa váš bazén volal.

Teraz otvorte nový súbor pomocou nano alebo ľubovoľného textového editora, ktorý uprednostňujete, a upravte ho tak, aby vyhovoval vášmu účelu. Pravdepodobne budete chcieť vyladiť čísla podriadených procesov a prípadne, pod ktorým používateľom a skupinou fond beží, ale dve nastavenia, ktoré musíte bezpodmienečne zmeniť, sú názov fondu a soket, ktorý počúva, inak bude v konflikte s existujúcim fondom a veci prestanú fungovať.

Názov fondu je v hornej časti súboru v hranatých zátvorkách. Štandardne je to [www] . Zmeňte to na čokoľvek chcete; Navrhujem to isté, ako ste pomenovali konfiguračný súbor, takže v záujme tohto príkladu ho zmeňte na [mypool] . Ak ho nezmeníte, zdá sa, že PHP-FPM načíta iba prvý konfiguračný súbor s týmto názvom, čo pravdepodobne pokazí veci.

Potom musíte zmeniť soket alebo adresu, ktorú počúvate, ktorá je definovaná direktívou listen . V predvolenom nastavení PHP-FPM používa zásuvky Unix, takže vaša direktíva počúvania bude pravdepodobne vyzerať takto:

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

Môžete ho zmeniť na akýkoľvek platný názov, ktorý chcete, ale opäť navrhujem, aby ste sa držali niečoho podobného názvu konfiguračného súboru, takže ho môžete nastaviť napríklad na:

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

Dobre, potom uložte súbor a ukončite textový editor.


Časť 2 – Aktualizácia konfigurácie virtuálneho hostiteľa NGINX

Teraz musíte otvoriť súbor virtuálneho hostiteľa NGINX s konfiguráciou FastCGI, ktorú chcete zmeniť na nový fond – alebo skôr pripojiť sa k novému soketu.

V predvolenom nastavení na Ubuntu 14.04 sú tieto uložené v /etc/nginx/sites-available, ale môžu byť definované aj inde. Pravdepodobne najlepšie viete, kde sa nachádzajú vaše konfigurácie virtuálneho hostiteľa ;-)

Otvorte príslušný konfiguračný súbor vo svojom obľúbenom textovom editore a vyhľadajte direktívu fastcgi_pass (ktorá musí byť v kontexte umiestnenia) definujúca socket PHP-FPM. Túto hodnotu musíte zmeniť tak, aby zodpovedala novej konfigurácii fondu PHP-FPM, ktorú ste vykonali v prvom kroku, takže v pokračovaní nášho príkladu by ste to zmenili na:

fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;

Potom uložte a zatvorte aj tento súbor. Už ste takmer hotoví.


Časť 3 – Reštartujte PHP-FPM a NGINX

Ak chcete použiť zmeny konfigurácie, ktoré ste vykonali, reštartujte PHP-FPM aj NGINX. Možno bude stačiť znova načítať namiesto reštartu , ale zdá sa mi to trochu zasiahnuté, v závislosti od toho, ktoré nastavenia sa zmenili. V konkrétnom prípade som chcel, aby staré podriadené procesy PHP-FPM okamžite zomreli, takže bolo potrebné reštartovať PHP-FPM, ale pre NGINX môže stačiť opätovné načítanie. Vyskúšajte si to sami.

sudo service php5-fpm restart
sudo service nginx restart

A voila, hotovo. Ak ste urobili všetko správne, virtuálny hostiteľ, ktorý ste upravili, by teraz mal používať nový fond PHP-FPM a nezdieľať podriadené procesy so žiadnymi inými virtuálnymi hostiteľmi.

Zdieľať na BlueskyZdieľať na FacebookuZdieľať na LinkedInZdieľať na TumblrZdieľať na XZdieľať na LinkedInPripnúť na Pintereste

Mikkel Bang Christensen

O autorovi

Mikkel Bang Christensen
Mikkel je tvorcom a majiteľom miklix.com. Má viac ako 20 rokov skúseností ako profesionálny počítačový programátor/vývojár softvéru a v súčasnosti pracuje na plný úväzok pre veľkú európsku IT korporáciu. Keď práve nepíše blog, venuje svoj voľný čas širokej škále záujmov, koníčkov a aktivít, čo sa môže do istej miery odrážať v rôznorodosti tém na tejto webovej lokalite.