Jinsi ya Kusanidi Madimbwi Tofauti ya PHP-FPM katika NGINX
Iliyochapishwa: 15 Februari 2025, 11:54:34 UTC
Mara ya mwisho kusasishwa: 12 Januari 2026, 08:30:14 UTC
Katika makala haya, ninapitia hatua za usanidi zinazohitajika ili kuendesha mabwawa mengi ya PHP-FPM na kuunganisha NGINX kwayo kupitia FastCGI, kuruhusu utenganishaji wa michakato na utenganishaji kati ya seva pepe.
How to Set Up Separate PHP-FPM Pools in NGINX
Taarifa katika chapisho hili inategemea NGINX 1.4.6 na PHP-FPM 5.5.9 inayoendeshwa kwenye Seva ya Ubuntu 14.04 x64. Huenda ikawa halali au isiwe halali kwa matoleo mengine. (Sasisho: Ninaweza kuthibitisha kwamba kufikia Seva ya Ubuntu 24.04, PHP-FPM 8.3 na NGINX 1.24.0, maagizo yote katika chapisho hili bado yanafanya kazi)
Kuna faida kadhaa za kuanzisha mabwawa mengi ya michakato ya watoto ya PHP-FPM badala ya kuendesha kila kitu katika bwawa moja. Usalama, utengano/utengano na usimamizi wa rasilimali huibuka akilini kama baadhi ya faida kuu.
Bila kujali motisha yako ni nini, chapisho hili litakusaidia kuifanya :-)
Sehemu ya 1 - Sanidi bwawa jipya la PHP-FPM
Kwanza, unahitaji kupata saraka ambapo PHP-FPM huhifadhi usanidi wake wa bwawa. Kwenye Ubuntu 14.04, hii ni /etc/php5/fpm/pool.d kwa chaguo-msingi. Labda tayari kuna faili hapo inayoitwa www.conf, ambayo ina usanidi wa bwawa chaguo-msingi. Ikiwa hujaangalia faili hiyo hapo awali, kuna uwezekano mkubwa unapaswa kuipitia na kurekebisha mipangilio iliyomo kwa ajili ya usanidi wako kwani chaguo-msingi ni kwa seva isiyo na nguvu nyingi, lakini kwa sasa tengeneza nakala yake ili tusilazimike kuanza kutoka mwanzo:
Bila shaka, badilisha "mypool" na chochote unachotaka bwawa lako liitwe.
Sasa fungua faili mpya kwa kutumia nano au kihariri chochote cha maandishi unachopendelea na uirekebishe ili iendane na kusudi lako. Huenda utahitaji kurekebisha nambari za mchakato wa mtoto na pengine ni mtumiaji gani na kikundi gani cha bwawa kinapitia, lakini mipangilio miwili ambayo lazima ubadilishe kabisa ni jina la bwawa na soketi inayosikiliza, vinginevyo itagongana na bwawa lililopo na mambo yataacha kufanya kazi.
Jina la bwawa liko karibu na sehemu ya juu ya faili, likiwa limeambatanishwa katika mabano ya mraba. Kwa chaguo-msingi ni [www]. Badilisha hii iwe chochote unachotaka; Ninapendekeza kama vile ulivyoipa jina faili ya usanidi, kwa hivyo kwa mfano huu ibadilishe kuwa [mypool]. Usipoibadilisha, inaonekana kwamba PHP-FPM itapakia faili ya kwanza ya usanidi yenye jina hilo pekee, ambalo lina uwezekano wa kuharibu mambo.
Kisha unahitaji kubadilisha soketi au anwani unayosikiliza, ambayo hufafanuliwa na agizo la kusikiliza. Kwa chaguo-msingi, PHP-FPM hutumia soketi za Unix kwa hivyo agizo lako la kusikiliza labda litaonekana kama hii:
Unaweza kuibadilisha kuwa jina lolote halali unalotaka, lakini tena, ninapendekeza uendelee na kitu sawa na jina la faili la usanidi, kwa hivyo unaweza kwa mfano kuiweka kuwa:
Sawa basi, hifadhi faili na utoke kwenye kihariri maandishi.
Sehemu ya 2 - Sasisha usanidi wa seva pepe ya NGINX
Sasa unahitaji kufungua faili ya seva pepe ya NGINX yenye usanidi wa FastCGI unaotaka kubadilisha hadi kwenye bwawa jipya - au tuseme, unganisha kwenye soketi mpya.
Kwa chaguo-msingi kwenye Ubuntu 14.04, hizi huhifadhiwa chini ya /etc/nginx/sites-available, lakini pia zinaweza kufafanuliwa kwingineko. Labda unajua vyema mahali ambapo usanidi wako wa seva pepe unapatikana ;-)
Fungua faili husika ya usanidi katika kihariri chako cha maandishi unachopenda na utafute agizo la fastcgi_pass (ambalo lazima liwe katika muktadha wa eneo) linalofafanua soketi ya PHP-FPM. Lazima ubadilishe thamani hii ili ilingane na usanidi mpya wa bwawa la PHP-FPM ulioufanya chini ya hatua ya kwanza, kwa hivyo kuendelea na mfano wetu utabadilisha hii kuwa:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Kisha hifadhi na ufunge faili hiyo pia. Umekaribia kumaliza sasa.
Sehemu ya 3 - Anzisha upya PHP-FPM na NGINX
Ili kutumia mabadiliko ya usanidi uliyofanya, anzisha upya PHP-FPM na NGINX. Inaweza kutosha kupakia upya badala ya kuanza upya, lakini naona imegongwa kidogo, kulingana na mipangilio gani imebadilishwa. Katika hali maalum, nilitaka michakato ya zamani ya PHP-FPM ififie mara moja, kwa hivyo kuanzisha upya PHP-FPM kulihitajika, lakini kwa NGINX kupakia upya kunaweza kutosha. Jaribu mwenyewe.
sudo service nginx restart
Na voila, umemaliza. Ukifanya kila kitu kwa usahihi, seva pepe uliyorekebisha sasa inapaswa kutumia kundi jipya la PHP-FPM na isishiriki michakato ya watoto na seva nyingine yoyote pepe.
