Miklix

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.


Ang pahinang ito ay isinalin sa makina mula sa Ingles upang gawin itong naa-access sa pinakamaraming tao hangga't maaari. Sa kasamaang palad, ang pagsasalin ng makina ay hindi pa isang perpektong teknolohiya, kaya maaaring mangyari ang mga error. Kung gusto mo, maaari mong tingnan ang orihinal na bersyong Ingles dito:

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:

sudo cp www.conf mypool.conf

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:

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

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:

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

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

Ibahagi sa BlueskyIbahagi sa FacebookIbahagi sa LinkedInIbahagi sa TumblrIbahagi sa XIbahagi sa LinkedInI-pin sa Pinterest

Mikkel Christensen

Tungkol sa May-akda

Mikkel Christensen
Si Mikkel ang lumikha at may-ari ng miklix.com. Siya ay may higit sa 20 taong karanasan bilang isang propesyonal na computer programmer/software developer at kasalukuyang nagtatrabaho ng full-time para sa isang malaking European IT corporation. Kapag hindi nagba-blog, ginugugol niya ang kanyang bakanteng oras sa isang malawak na hanay ng mga interes, libangan, at aktibidad, na maaaring sa ilang lawak ay makikita sa iba't ibang mga paksang sakop sa website na ito.