Ako nastaviť samostatné fondy PHP-FPM v NGINX
Publikované: 15. februára 2025 o 11:53:03 UTC
Posledná aktualizácia: 12. januára 2026 o 8:30:06 UTC
V tomto článku si prejdeme kroky konfigurácie potrebné na spustenie viacerých PHP-FPM poolov a pripojenie NGINX k nim prostredníctvom FastCGI, čo umožňuje oddelenie a izoláciu procesov medzi virtuálnymi hostiteľmi.
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 spustených na Ubuntu Serveri 14.04 x64. Pre iné verzie môžu, ale nemusia byť platné. (Aktualizácia: Môžem potvrdiť, že od Ubuntu Servera 24.04, PHP-FPM 8.3 a NGINX 1.24.0 všetky pokyny v tomto príspevku stále fungujú)
Nastavenie viacerých podprocesových poolov PHP-FPM má oproti spúšťaniu všetkého v jednom poole niekoľko výhod. Ako niektoré z hlavných mi napadnú bezpečnosť, oddelenie/izolácia a správa zdrojov.
Bez ohľadu na to, aká je vaša motivácia, tento príspevok vám s tým pomôže :-)
Časť 1 – Nastavenie nového fondu PHP-FPM
Najprv musíte nájsť adresár, kde PHP-FPM ukladá svoje konfigurácie poolu. V Ubuntu 14.04 je to štandardne /etc/php5/fpm/pool.d. Pravdepodobne tam už existuje súbor s názvom www.conf, ktorý obsahuje konfiguráciu pre predvolený pool. Ak ste si tento súbor ešte nepozreli, je pravdepodobné, že by ste si ho mali prejsť a upraviť nastavenia pre vaše nastavenie, pretože predvolené hodnoty sú pre pomerne slabý server, ale zatiaľ si len vytvorte jeho kópiu, aby sme nemuseli začínať od začiatku:
Samozrejme, nahraďte „mypool“ akýmkoľvek názvom, pod ktorým chcete, aby sa váš bazén nazýval.
Teraz otvorte nový súbor pomocou nano alebo akéhokoľvek textového editora, ktorý uprednostňujete, a upravte ho podľa svojich potrieb. Pravdepodobne budete chcieť upraviť čísla podradených procesov a prípadne aj používateľa a skupinu, pod ktorou bude fond bežať, ale dve nastavenia, ktoré musíte bezpodmienečne zmeniť, sú názov fondu a socket, na ktorý načúva, inak bude konfliktovať s existujúcim fondom a všetko prestane fungovať.
Názov poolu sa nachádza v hornej časti súboru, uzavretý v hranatých zátvorkách. Predvolene je to [www]. Zmeňte ho na čokoľvek chcete; navrhujem použiť rovnaký názov, aký ste použili pri názve konfiguračného súboru, takže pre účely 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 spôsobí problémy.
Potom musíte zmeniť socket alebo adresu, na ktorú počúvate, čo je definované direktívou listen. PHP-FPM štandardne používa Unixové sockety, takže vaša direktíva listen bude pravdepodobne vyzerať takto:
Môžete ho zmeniť na ľubovoľný platný názov, ale opäť odporúčam použiť niečo podobné názvu konfiguračného súboru, napríklad ho nastaviť na:
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ý pool – alebo skôr pripojiť sa k novému socketu.
Predvolenom nastavení sú v Ubuntu 14.04 uložené v /etc/nginx/sites-available, ale dajú sa definovať aj inde. Pravdepodobne najlepšie viete, kde sa nachádzajú konfigurácie vášho virtuálneho hostiteľa ;-)
Otvorte príslušný konfiguračný súbor vo vašom obľúbenom textovom editore a vyhľadajte direktívu fastcgi_pass (ktorá musí byť v kontexte umiestnenia) definujúcu socket PHP-FPM. Túto hodnotu musíte zmeniť tak, aby zodpovedala novej konfigurácii poolu PHP-FPM, ktorú ste vytvorili v prvom kroku, takže v našom príklade by ste to zmenili na:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Potom uložte a zatvorte aj tento súbor. Teraz ste takmer hotoví.
Časť 3 – Reštart PHP-FPM a NGINX
Ak chcete použiť vykonané zmeny konfigurácie, reštartujte PHP-FPM aj NGINX. Môže stačiť opätovné spustenie namiesto reštartu, ale mne sa to zdá byť trochu nepresné v závislosti od toho, ktoré nastavenia sa zmenia. V konkrétnom prípade som chcel, aby staré podradené procesy PHP-FPM okamžite zomreli, takže bolo potrebné reštartovať PHP-FPM, ale pre NGINX môže stačiť opätovné spustenie. Vyskúšajte si to sami.
sudo service nginx restart
A voilà, máte hotovo. Ak ste všetko urobili správne, virtuálny hostiteľ, ktorý ste upravili, by teraz mal používať nový pool PHP-FPM a nemal by zdieľať podradené procesy so žiadnymi inými virtuálnymi hostiteľmi.
