Miklix

NGINX တွင် သီးခြား PHP-FPM Pools များကို သတ်မှတ်နည်း

ထုတ်ဝေသည်- ၂၀၂၅၊ ဖေဖော်ဝါရီ ၁၅ UTC ၁၁:၅၇:၂၅
နောက်ဆုံး မွမ်းမံပြင်ဆင်သည်- ၂၀၂၆၊ ဇန်နဝါရီ ၁၂ UTC ၀၈:၃၀:၂၆

ဒီဆောင်းပါးမှာ PHP-FPM pool အများအပြားကို run ပြီး NGINX ကို FastCGI မှတစ်ဆင့် ချိတ်ဆက်ဖို့ လိုအပ်တဲ့ configuration အဆင့်တွေကို ကျွန်တော် ဆွေးနွေးပါမယ်။ ဒါကြောင့် virtual host တွေကြားမှာ process separation နဲ့ isolation လုပ်နိုင်ပါတယ်။


ဤစာမျက်နှာကို လူများတတ်နိုင်သမျှ ဝင်ရောက်ကြည့်ရှုနိုင်စေရန်အတွက် ဤစာမျက်နှာကို အင်္ဂလိပ်မှ စက်ဖြင့် ဘာသာပြန်ထားခြင်းဖြစ်ပါသည်။ ကံမကောင်းစွာဖြင့်၊ စက်ဘာသာပြန်ခြင်းသည် ပြီးပြည့်စုံသောနည်းပညာမဟုတ်သေးသောကြောင့် အမှားအယွင်းများဖြစ်ပေါ်လာနိုင်သည်။ သင်နှစ်သက်ပါက မူရင်းအင်္ဂလိပ်ဗားရှင်းကို ဤနေရာတွင် ကြည့်ရှုနိုင်ပါသည်။

How to Set Up Separate PHP-FPM Pools in NGINX

ဤပို့စ်ရှိ အချက်အလက်များသည် Ubuntu Server 14.04 x64 တွင် လည်ပတ်နေသော NGINX 1.4.6 နှင့် PHP-FPM 5.5.9 တို့ကို အခြေခံထားပါသည်။ အခြားဗားရှင်းများအတွက် မှန်ကန်သည်ဖြစ်စေ မမှန်ကန်သည်ဖြစ်စေ မှန်ကန်နိုင်ပါသည်။ (အပ်ဒိတ်- Ubuntu Server 24.04၊ PHP-FPM 8.3 နှင့် NGINX 1.24.0 မှစ၍ ဤပို့စ်ရှိ ညွှန်ကြားချက်အားလုံး အလုပ်လုပ်နေဆဲဖြစ်ကြောင်း အတည်ပြုနိုင်ပါသည်။)

pool တစ်ခုတည်းမှာ အားလုံးကို run မယ့်အစား PHP-FPM child process pool အများအပြားကို setup လုပ်ခြင်းရဲ့ အားသာချက်တွေ အများကြီးရှိပါတယ်။ Security, separation/isolation နဲ့ resource management တို့ဟာ အဓိကကျတဲ့ အားသာချက်အနည်းငယ်အဖြစ် ပေါ်လာပါတယ်။

မင်းရဲ့ စိတ်အားထက်သန်မှုက ဘာပဲဖြစ်ဖြစ် ဒီပို့စ်က မင်းကို လုပ်ဖို့ ကူညီပေးလိမ့်မယ် :-)

အပိုင်း ၁ – PHP-FPM pool အသစ်တစ်ခု တည်ဆောက်ပါ

အရင်ဆုံး PHP-FPM က သူ့ရဲ့ pool configuration တွေကို သိမ်းထားတဲ့ directory ကို ရှာရပါမယ်။ Ubuntu 14.04 မှာ default အနေနဲ့ /etc/php5/fpm/pool.d ဖြစ်ပါတယ်။ default pool အတွက် configuration ကို သိမ်းထားတဲ့ www.conf ဆိုတဲ့ file တစ်ခု ရှိပြီးသား ဖြစ်နိုင်ပါတယ်။ အဲဒီ file ကို မကြည့်ရသေးရင် setup အတွက် setting တွေကို ပြင်ဆင်သင့်ပါတယ်။ default တွေက power နည်းတဲ့ server တွေအတွက်ပါ။ ဒါပေမယ့် အခုချိန်မှာတော့ အစကနေ ပြန်စစရာမလိုအောင် copy ကူးထားလိုက်ပါ။

sudo cp www.conf mypool.conf

ဟုတ်ပါတယ်၊ “mypool” ကို သင့်ရေကူးကန်ကို ခေါ်စေချင်တဲ့ အမည်နဲ့ အစားထိုးလိုက်ပါ။

အခု nano ဒါမှမဟုတ် သင်ကြိုက်နှစ်သက်ရာ text editor ကိုသုံးပြီး ဖိုင်အသစ်ကိုဖွင့်ပြီး သင့်ရည်ရွယ်ချက်နဲ့ ကိုက်ညီအောင် ချိန်ညှိပါ။ child process number တွေနဲ့ pool က ဘယ် user နဲ့ group အောက်မှာ run နေလဲဆိုတာကို ချိန်ညှိချင်မှာဖြစ်ပေမယ့် လုံးဝပြောင်းလဲရမယ့် setting နှစ်ခုကတော့ pool ရဲ့နာမည်နဲ့ ၎င်းနားထောင်နေတဲ့ socket ပါ။ မဟုတ်ရင် ရှိပြီးသား pool နဲ့ ပဋိပက္ခဖြစ်ပြီး အရာအားလုံး အလုပ်မလုပ်တော့ပါဘူး။

pool ရဲ့နာမည်က ဖိုင်ရဲ့အပေါ်ဆုံးနားမှာရှိပြီး လေးထောင့်ကွင်းစကွင်းထဲမှာ ထည့်ထားပါတယ်။ default အားဖြင့် [www] ပါ။ ဒါကို သင်ကြိုက်သလိုပြောင်းပါ။ configuration file ကို သင်ပေးထားတဲ့နာမည်အတိုင်း ပေးမယ်လို့ အကြံပြုပါတယ်။ ဒီဥပမာအတွက် [mypool] လို့ပြောင်းပါ။ သင်မပြောင်းဘူးဆိုရင် PHP-FPM က အဲဒီနာမည်နဲ့ ပထမဆုံး configuration file ကိုပဲ load လုပ်မှာဖြစ်ပြီး အဲဒါက အရာတွေကို ပျက်စီးစေနိုင်ပါတယ်။

ထို့နောက် listen directive ဖြင့် သတ်မှတ်ထားသော socket သို့မဟုတ် address ကို ပြောင်းလဲရန် လိုအပ်ပါသည်။ default အားဖြင့် PHP-FPM သည် Unix sockets များကို အသုံးပြုသောကြောင့် သင်၏ listen directive သည် ဤကဲ့သို့ ပေါ်လာနိုင်သည်။

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

သင်လိုချင်သော တရားဝင်အမည်တစ်ခုခုကို ပြောင်းလဲနိုင်သည်၊ သို့သော်၊ configuration ဖိုင်အမည်နှင့်ဆင်တူသောအရာတစ်ခုခုဖြင့် ဆက်လက်လုပ်ဆောင်ရန် အကြံပြုလိုပါသည်၊ ဥပမာအားဖြင့်၊ သင်သည် ၎င်းကို အောက်ပါအတိုင်း သတ်မှတ်နိုင်သည်-

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

ကောင်းပြီ၊ ဖိုင်ကို save လုပ်ပြီး text editor ကနေ ထွက်လိုက်ပါ။

အပိုင်း ၂ – NGINX virtual host configuration ကို အပ်ဒိတ်လုပ်ပါ

ယခု pool အသစ်သို့ ပြောင်းလဲလိုသော FastCGI configuration ဖြင့် NGINX virtual host file ကို ဖွင့်ရန် လိုအပ်ပါသည် - သို့မဟုတ် socket အသစ်နှင့် ချိတ်ဆက်ရန် လိုအပ်ပါသည်။

Ubuntu 14.04 မှာ default အနေနဲ့ ဒါတွေကို /etc/nginx/sites-available အောက်မှာ သိမ်းဆည်းထားပေမယ့် တခြားနေရာတွေမှာလည်း သတ်မှတ်နိုင်ပါတယ်။ သင့်ရဲ့ virtual host configuration တွေ ဘယ်မှာရှိလဲဆိုတာ သင်အသိဆုံးဖြစ်နိုင်ပါတယ် ;-)

သင်အကြိုက်ဆုံး text editor မှာ သက်ဆိုင်ရာ configuration file ကိုဖွင့်ပြီး PHP-FPM socket ကိုသတ်မှတ်ပေးတဲ့ fastcgi_pass directive (တည်နေရာ context မှာရှိရမယ်) ကိုရှာပါ။ ဒီ value ကို step 1 မှာ သင်လုပ်ခဲ့တဲ့ PHP-FPM pool configuration အသစ်နဲ့ ကိုက်ညီအောင် ပြောင်းလဲရပါမယ်။ ဒါကြောင့် ကျွန်ုပ်တို့ရဲ့ ဥပမာကို ဆက်သွားရင် အောက်ပါအတိုင်း ပြောင်းလဲရပါမယ်။

fastcgi_pass unix:/var/run/php5-fpm-mypool.sock; ကုဒ်နံပါတ်: /var/run/php5-fpm-mypool.sock;

ပြီးရင် အဲဒီဖိုင်ကို save လုပ်ပြီး ပိတ်လိုက်ပါ။ အခု ပြီးတော့မယ်။

အပိုင်း ၃ – PHP-FPM နှင့် NGINX ကို ပြန်လည်စတင်ပါ

သင်ပြုလုပ်ထားသော configuration ပြောင်းလဲမှုများကို အသုံးချရန်အတွက် PHP-FPM နှင့် NGINX နှစ်ခုလုံးကို restart လုပ်ပါ။ restart မလုပ်ဘဲ reload လုပ်ရုံဖြင့် လုံလောက်နိုင်သော်လည်း မည်သည့် setting များကို ပြောင်းလဲထားသည်ပေါ် မူတည်၍ အနည်းငယ် မှားယွင်းတတ်သည်ဟု ကျွန်တော်ထင်ပါသည်။ အထူးသဖြင့် PHP-FPM child process ဟောင်းများကို ချက်ချင်းသေဆုံးစေလိုသောကြောင့် PHP-FPM ကို restart လုပ်ရန် လိုအပ်သော်လည်း NGINX အတွက် reload လုပ်ရုံဖြင့် လုံလောက်နိုင်ပါသည်။ ကိုယ်တိုင် စမ်းကြည့်ပါ။

sudo service php5-fpm restart
sudo service nginx restart

ကဲ၊ ပြီးပါပြီ။ အရာအားလုံးကို မှန်ကန်စွာ လုပ်ဆောင်ပြီးပါက သင်ပြုပြင်ထားသော virtual host သည် PHP-FPM pool အသစ်ကို အသုံးပြုနေပြီး အခြား virtual host များနှင့် child process များကို မျှဝေတော့မည် မဟုတ်ပါ။

Bluesky တွင်မျှဝေပါ။Facebook တွင်မျှဝေပါ။LinkedIn တွင်မျှဝေပါ။Tumblr တွင်မျှဝေပါ။X တွင်မျှဝေပါ။LinkedIn တွင်မျှဝေပါ။ပင်တရက်စ်တွင် ပင်ထားပါ

Mikkel Christensen

စာရေးသူအကြောင်း

Mikkel Christensen
မိုက်ကယ် သည် miklix.com ၏ ဖန်တီးရှင်နှင့် ပိုင်ရှင်ဖြစ်သည်။ သူသည် ပရော်ဖက်ရှင်နယ် ကွန်ပြူတာ ပရိုဂရမ်မာ/ဆော့ဖ်ဝဲလ် တီထွင်သူအဖြစ် နှစ်ပေါင်း 20 ကျော် အတွေ့အကြုံရှိပြီး ဥရောပ အိုင်တီကော်ပိုရေးရှင်းကြီးတစ်ခုတွင် လက်ရှိအချိန်ပြည့် အလုပ်ခန့်ထားသည်။ ဘလော့ဂ်မရေးဖြစ်သောအခါတွင် သူသည် ၎င်း၏အားလပ်ချိန်များကို စိတ်ဝင်စားမှု၊ ဝါသနာနှင့် လှုပ်ရှားမှုများစွာတွင် ဖြုန်းတီးခဲ့ပြီး၊ ဤဝဘ်ဆိုက်တွင် ဖော်ပြထားသော အကြောင်းအရာမျိုးစုံကို အတိုင်းအတာတစ်ခုအထိ ထင်ဟပ်စေနိုင်သည်။