Paano Mag-set Up ng Mga Hiwalay na PHP-FPM Pool sa NGINX
Nai-publish: Marso 19, 2025 nang 9:27:27 PM UTC
Sa artikulong ito, tatalakayin ko ang mga hakbang sa pagsasaayos na kailangan upang magpatakbo ng maraming PHP-FPM pool at ikonekta ang NGINX sa mga ito sa pamamagitan ng FastCGI, na nagbibigay-daan para sa paghihiwalay ng proseso at paghihiwalay sa pagitan ng mga virtual host.
How to Set Up Separate PHP-FPM Pools in NGINX
Ang impormasyon sa post na ito ay batay sa NGINX 1.4.6 at PHP-FPM 5.5.9 na tumatakbo sa Ubuntu Server 14.04 x64. Maaaring tama o hindi ito para sa ibang mga bersyon. (Update: Maaari kong kumpirmahin na sa Ubuntu Server 24.04, PHP-FPM 8.3 at NGINX 1.24.0, gumagana pa rin ang lahat ng mga tagubilin sa post na ito)
May ilang mga benepisyo sa pag-set up ng maraming PHP-FPM child process pools kaysa sa pagpapatakbo ng lahat ng proseso sa parehong pool. Ang seguridad, paghihiwalay/pagtatatag ng mga limitasyon at pamamahala ng mga mapagkukunan ay ilan sa mga pangunahing benepisyo.
Anuman ang iyong motibasyon, tutulungan ka ng post na ito na gawin ito :-)
Bahagi 1 – Mag-set up ng bagong PHP-FPM pool
Una, kailangan mong hanapin ang direktoryo kung saan iniimbak ng PHP-FPM ang mga configuration ng pool nito. Sa Ubuntu 14.04, ito ay /etc/php5/fpm/pool.d bilang default. Malamang ay may file na doon na tinatawag na www.conf, na naglalaman ng configuration para sa default na pool. Kung hindi mo pa tiningnan ang file na iyon, malamang na dapat mong suriin ito at ayusin ang mga setting nito para sa iyong setup dahil ang mga default ay para sa isang hindi gaanong makapangyarihang server, ngunit sa ngayon ay kopyahin mo lang ito upang hindi tayo magsimula mula sa simula:
Siyempre, palitan ang "mypool" ng kung anuman ang nais mong pangalan ng iyong pool.
Ngayon, buksan ang bagong file gamit ang nano o anumang text editor na iyong ginagamit at ayusin ito upang tumugma sa iyong layunin. Malamang na nais mong baguhin ang bilang ng mga child process at posibleng kung aling user at group ang gagamitin ng pool, ngunit ang dalawang setting na talagang kailangan mong baguhin ay ang pangalan ng pool at ang socket na kinikinig dito, kung hindi ay magkakaroon ng conflict sa kasalukuyang pool at titigil ang mga bagay na gumana.
Ang pangalan ng pool ay nasa itaas ng file, nakapaloob sa mga panaklong. Bilang default, ito ay [www]. Palitan ito ng kung anuman ang gusto mo; inirerekomenda ko ang pareho ng pangalan ng configuration file, kaya para sa halimbawa na ito, palitan ito sa [mypool]. Kung hindi mo ito papalitan, mukhang ang PHP-FPM ay maglo-load lamang ng unang configuration file na may pangalang iyon, na malamang ay makakasira sa mga bagay.
Kailangan mo ring baguhin ang socket o address na iyong pinapakinggan, na tinutukoy ng listen na utos. Bilang default, gumagamit ang PHP-FPM ng Unix sockets kaya ang iyong listen na utos ay malamang na ganito:
Maaari mo itong palitan ng anumang valid na pangalan na nais mo, ngunit muli, inirerekomenda kong manatili sa isang bagay na katulad ng pangalan ng configuration file, kaya maaari mong itakda ito sa:
Ayusin, i-save ang file at lumabas mula sa text editor.
Bahagi 2 – I-update ang NGINX virtual host configuration
Ngayon kailangan mong buksan ang NGINX virtual host file na may FastCGI configuration na nais mong baguhin patungo sa bagong pool – o mas tamang sabihin ay, kumonekta sa bagong socket.
Bilang default sa Ubuntu 14.04, naka-imbak ito sa /etc/nginx/sites-available, ngunit maaari ring ideklara sa ibang lugar. Malamang ay alam mo kung saan matatagpuan ang iyong virtual host configurations ;-)
Buksan ang kaugnay na configuration file sa iyong paboritong text editor at hanapin ang fastcgi_pass na utos (na dapat nasa loob ng location context) na tumutukoy sa PHP-FPM socket. Kailangan mong baguhin ang value na ito upang tumugma sa bagong PHP-FPM pool configuration na ginawa mo sa hakbang isa, kaya ipagpatuloy ang aming halimbawa at baguhin ito sa:
fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Pagkatapos ay i-save at isara rin ang file na iyon. Malapit ka na matapos.
Bahagi 3 – I-restart ang PHP-FPM at NGINX
Upang ma-apply ang mga pagbabago sa configuration na iyong ginawa, i-restart ang parehong PHP-FPM at NGINX. Maaring sapat na ang reload imbes na restart, ngunit natuklasan ko na ito ay medyo hit and miss, depende sa kung aling mga setting ang binago. Sa partikular na kasong ito, nais kong agad mamatay ang mga lumang PHP-FPM child processes, kaya kailangan ng pag-restart ng PHP-FPM, ngunit para sa NGINX, maaring sapat na ang reload. Subukan mo na lang ito para sa iyong sarili.
sudo service nginx restart
At voila, tapos ka na. Kung ginawa mo ang lahat ng tama, ang virtual host na binago mo ay dapat na ngayong gumagamit ng bagong PHP-FPM pool at hindi na maghahatid ng child processes sa anumang ibang virtual hosts.