Paano Mag-set Up ng Mga Hiwalay na PHP-FPM Pool sa NGINX
Nai-publish: Marso 19, 2025 nang 9:27:27 PM UTC
Huling na-update: Enero 12, 2026 nang 8:30:32 AM 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 balido ito o hindi para sa ibang mga bersyon. (Update: Makukumpirma ko 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)
Mayroong ilang mga bentahe sa pag-set up ng maraming PHP-FPM child process pool kaysa sa pagpapatakbo ng lahat sa iisang pool. Ang seguridad, paghihiwalay/paghihiwalay at pamamahala ng mapagkukunan ay ilan sa mga pangunahing bagay na dapat isaalang-alang.
Anuman ang iyong motibasyon, makakatulong ang post na ito para magawa mo 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 mayroon nang file doon na tinatawag na www.conf, na naglalaman ng configuration para sa default pool. Kung hindi mo pa nababasa ang file na iyon, malamang na dapat mo itong basahin at baguhin ang mga setting nito para sa iyong setup dahil ang mga default ay para sa isang medyo mahinang server, ngunit sa ngayon ay gumawa ka na lang ng kopya nito para hindi na tayo magsimula sa simula:
Siyempre, palitan ang "mypool" ng kahit anong gusto mong itawag sa pool mo.
Ngayon, buksan ang bagong file gamit ang nano o alinmang text editor na gusto mo at ayusin ito upang umangkop sa iyong layunin. Malamang na gugustuhin mong baguhin ang mga child process number at posibleng kung saang user at group tumatakbo ang pool, ngunit ang dalawang setting na talagang kailangan mong baguhin ay ang pangalan ng pool at ang socket na pinapakinggan nito, kung hindi ay magko-conflict ito sa kasalukuyang pool at titigil sa paggana ang mga ito.
Ang pangalan ng pool ay malapit sa itaas ng file, nakapaloob sa mga square bracket. Bilang default, ito ay [www]. Baguhin ito sa anumang gusto mo; iminumungkahi ko ang katulad ng pagpapangalan mo sa configuration file, kaya para sa halimbawang ito, baguhin ito sa [mypool]. Kung hindi mo ito babaguhin, tila ilo-load lamang ng PHP-FPM ang unang configuration file na may ganoong pangalan, na malamang na makakasira sa mga bagay-bagay.
Pagkatapos ay kailangan mong baguhin ang socket o address na iyong pinakikinggan, na tinutukoy ng listen directive. Bilang default, ang PHP-FPM ay gumagamit ng mga Unix socket kaya ang iyong listen directive ay malamang na magmumukhang ganito:
Maaari mo itong baguhin sa anumang wastong pangalan na gusto mo, ngunit muli, iminumungkahi kong manatili sa isang bagay na katulad ng configuration filename, kaya maaari mo itong itakda halimbawa sa:
Sige, pagkatapos, i-save ang file at lumabas sa text editor.
Bahagi 2 – I-update ang configuration ng virtual host ng NGINX
Ngayon kailangan mong buksan ang NGINX virtual host file gamit ang configuration ng FastCGI na gusto mong baguhin sa isang bagong pool – o sa halip, kumonekta sa bagong socket.
Bilang default sa Ubuntu 14.04, ang mga ito ay nakaimbak sa ilalim ng /etc/nginx/sites-available, ngunit maaari ring tukuyin sa ibang lugar. Marahil ay mas alam mo kung saan matatagpuan ang mga configuration ng iyong virtual host ;-)
Buksan ang kaugnay na configuration file sa iyong paboritong text editor at hanapin ang fastcgi_pass directive (na dapat nasa konteksto ng lokasyon) na tumutukoy sa PHP-FPM socket. Dapat mong baguhin ang value na ito upang tumugma ito sa bagong PHP-FPM pool configuration na iyong ginawa sa unang hakbang, kaya sa pagpapatuloy ng ating halimbawa, babaguhin mo ito sa:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Pagkatapos ay i-save at isara rin ang file na iyon. Malapit ka nang matapos ngayon.
Bahagi 3 – I-restart ang PHP-FPM at NGINX
Para mailapat ang mga pagbabago sa configuration na iyong ginawa, i-restart ang parehong PHP-FPM at NGINX. Maaaring sapat na ang pag-reload sa halip na i-restart, ngunit sa tingin ko ay medyo mahirap itong gawin, depende sa kung aling mga setting ang binago. Sa partikular na kaso, gusto kong mamatay agad ang mga lumang proseso ng PHP-FPM child, kaya kinailangan ang pag-restart ng PHP-FPM, ngunit para sa NGINX, maaaring sapat na ang pag-reload. Subukan mo ito mismo.
sudo service nginx restart
At voila, tapos ka na. Kung ginawa mo nang tama ang lahat, ang virtual host na iyong binago ay dapat na gumagamit na ngayon ng bagong PHP-FPM pool at hindi nagbabahagi ng mga child process sa ibang virtual host.
