NGINX တွင် သီးခြား PHP-FPM Pools များကို သတ်မှတ်နည်း
ထုတ်ဝေသည်- ၂၀၂၅၊ ဖေဖော်ဝါရီ ၁၅ UTC ၁၁:၅၇:၂၅
ဤဆောင်းပါးတွင်၊ PHP-FPM ရေကူးကန်အများအပြားကိုလည်ပတ်ပြီး NGINX ကို FastCGI မှတစ်ဆင့် ၎င်းတို့နှင့်ချိတ်ဆက်ရန် လိုအပ်သောဖွဲ့စည်းပုံပြင်ဆင်မှုအဆင့်များကို ကျွန်ုပ်လုပ်ဆောင်ပြီး virtual hosts များကြားတွင် ခွဲထုတ်ခြင်းနှင့် သီးခြားခွဲထုတ်ခြင်းတို့ကို ခွင့်ပြုပေးပါသည်။
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 တွင်အရာအားလုံးကိုလုပ်ဆောင်ခြင်းထက် PHP-FPM ကလေးလုပ်ငန်းစဉ်ပေါင်းကူးများစွာကိုတည်ဆောက်ခြင်းအတွက်အားသာချက်များစွာရှိသည်။ လုံခြုံရေး၊ ခွဲထွက်ခြင်း/အထီးကျန်ခြင်း နှင့် အရင်းအမြစ် စီမံခန့်ခွဲမှုတို့သည် အဓိကအချက်အနည်းငယ်အဖြစ် သတိရလာပါသည်။
မင်းရဲ့ Motivation က ဘာပဲဖြစ်ဖြစ် ဒီပို့စ်က မင်းကို ကူညီပေးလိမ့်မယ် :-)
အပိုင်း 1 – PHP-FPM ရေကူးကန်အသစ်ကို စနစ်ထည့်သွင်းပါ။
ပထမဦးစွာ၊ PHP-FPM သည် ၎င်း၏ pool configurations များကိုသိမ်းဆည်းသည့် directory ကိုရှာဖွေရန် လိုအပ်သည်။ Ubuntu 14.04 တွင်၊ ၎င်းသည် မူရင်းအားဖြင့် /etc/php5/fpm/pool.d ဖြစ်သည်။ အဲဒီမှာ www.conf လို့ ခေါ်တဲ့ ဖိုင်တစ်ခု ရှိနေပြီဖြစ်နိုင်တယ်၊ default pool အတွက် configuration ကို ကိုင်ထားတယ်။ အကယ်၍ သင်သည် ထိုဖိုင်ကို မကြည့်ရသေးပါက ၎င်းကိုဖြတ်သွားသင့်ပြီး သင်၏ setup အတွက် ဆက်တင်များကို ညှိုနှိုင်းညှိုနှိုင်းရန် လုံလောက်သော ပါဝါမရှိသော ဆာဗာအတွက် မူရင်းများဖြစ်သောကြောင့် ယခုမူ ၎င်းကို မိတ္တူကူးထားရုံဖြင့် အစမှစရန် မလိုအပ်ပါ။
သင်၏ရေကူးကန်ကို သင်ခေါ်လိုသမျှနှင့် "mypool" ကို အစားထိုးပါ။
ယခု ဖိုင်အသစ်ကို သင်နှစ်သက်ရာ nano သို့မဟုတ် စာသားတည်းဖြတ်မှုတစ်ခုခုကို အသုံးပြု၍ ဖွင့်ပြီး သင့်ရည်ရွယ်ချက်နှင့် ကိုက်ညီအောင် ချိန်ညှိပါ။ ကလေးလုပ်ငန်းစဉ်နံပါတ်များကို ပြုပြင်ပြောင်းလဲရန်နှင့် မည်သည့်အသုံးပြုသူနှင့်အဖွဲ့ဖွဲ့နိုင်သည် ဖြစ်နိုင်သည်၊ သို့သော် သင်လုံးဝပြောင်းလဲရမည့်ဆက်တင်နှစ်ခုမှာ pool ၏အမည်နှင့် ၎င်းနားထောင်နေသည့် socket ဖြစ်သည်၊ မဟုတ်ပါက ၎င်းသည် ရှိပြီးသား pool နှင့် ကွဲလွဲနေပြီး အရာများ အလုပ်မလုပ်တော့ပါ။
ရေကူးကန်၏အမည်သည် ဖိုင်၏ထိပ်နားတွင်၊ စတုရန်းကွင်းစကွက်များဖြင့် ထည့်သွင်းထားသည်။ မူရင်းအားဖြင့်၎င်းသည် [www] ဖြစ်သည်။ ဤအရာကို သင်အလိုရှိတိုင်း ပြောင်းလဲပါ။ configuration file ကို သင်အမည်ပေးသည်နှင့် အတူတူပင်ဖြစ်ကြောင်း ကျွန်ုပ်အကြံပြုလိုသည်၊ ထို့ကြောင့် ဤဥပမာကိုထောက်၍ [mypool] သို့ပြောင်းပါ။ ၎င်းကို သင်မပြောင်းလဲပါက၊ PHP-FPM သည် အရာများကို ချိုးဖျက်နိုင်ဖွယ်ရှိသည့် အဆိုပါအမည်ဖြင့် ပထမဆုံးဖွဲ့စည်းမှုဖိုင်ကိုသာ တင်လိမ့်မည်ဖြစ်ပုံရသည်။
ထို့နောက် သင်နားထောင်နေသော socket သို့မဟုတ် လိပ်စာကို နားထောင်ရန် လမ်းညွှန်ချက်ဖြင့် သတ်မှတ်ထားသော လိပ်စာကို ပြောင်းလဲရန် လိုအပ်သည်။ မူရင်းအားဖြင့် PHP-FPM သည် Unix sockets များကိုအသုံးပြုသောကြောင့် သင်၏ နားထောင်ခြင်း လမ်းညွှန်မှာ ဤကဲ့သို့ဖြစ်နိုင်သည်-
သင်အလိုရှိသော မည်သည့်တရားဝင်အမည်ကိုမဆို ပြောင်းလဲနိုင်သော်လည်း၊ ထပ်မံ၍ ဖွဲ့စည်းသတ်မှတ်ထားသော ဖိုင်အမည်နှင့် ဆင်တူသည့်အရာတစ်ခုကို ကပ်ထားရန် အကြံပြုထားသောကြောင့် ၎င်းအား ဥပမာအဖြစ် သတ်မှတ်နိုင်သည်-
ကောင်းပြီ၊ ဖိုင်ကိုသိမ်းပြီး စာသားတည်းဖြတ်သူမှ ထွက်ပါ။
အပိုင်း 2 – NGINX virtual host ဖွဲ့စည်းမှုကို အပ်ဒိတ်လုပ်ပါ။
ယခု သင်သည် ရေကူးကန်အသစ်သို့ ပြောင်းလိုသော FastCGI ဖွဲ့စည်းမှုပုံစံဖြင့် NGINX virtual host ဖိုင်ကိုဖွင့်ရန် လိုအပ်သည် - သို့မဟုတ် ယင်းအစား၊ ပေါက်ပေါက်အသစ်သို့ ချိတ်ဆက်ပါ။
Ubuntu 14.04 တွင် ပုံမှန်အားဖြင့်၊ ၎င်းတို့ကို /etc/nginx/sites-available အောက်တွင် သိမ်းဆည်းထားသော်လည်း အခြားနေရာတွင်လည်း သတ်မှတ်နိုင်သည်။ သင်၏ virtual host configurations သည် မည်သည့်နေရာတွင် ရှိနေသည်ကို သင်အသိဆုံးဖြစ်နိုင်သည် ;-)
သင်အကြိုက်ဆုံး စာသားတည်းဖြတ်မှုတွင် သက်ဆိုင်ရာ ဖွဲ့စည်းမှုပုံစံဖိုင်ကို ဖွင့်ပြီး PHP-FPM ဆော့ဝဲလ်ကို သတ်မှတ်သည့် fastcgi_pass ညွှန်ကြားချက် (တည်နေရာအခြေအနေတွင် ဖြစ်ရမည်) ကို ရှာပါ။ အဆင့်တစ်အောက်တွင် သင်ပြုလုပ်ခဲ့သော PHP-FPM pool configuration အသစ်နှင့် ကိုက်ညီစေရန် ဤတန်ဖိုးကို သင်ပြောင်းရမည်ဖြစ်ပြီး၊ ထို့ကြောင့် ကျွန်ုပ်တို့၏နမူနာကို ဆက်လက်လုပ်ဆောင်ခြင်းဖြင့် ဤအရာကို သင်ပြောင်းလဲသွားမည်ဖြစ်ပါသည်။
fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
ပြီးရင် အဲဒီဖိုင်ကို သိမ်းပြီး ပိတ်လိုက်ပါ။ ပြီးခါနီးနေပြီ။
အပိုင်း 3 – PHP-FPM နှင့် NGINX ကို ပြန်လည်စတင်ပါ။
သင်ပြုလုပ်ထားသော ဖွဲ့စည်းမှုပုံစံပြောင်းလဲမှုများကို အသုံးပြုရန်အတွက် PHP-FPM နှင့် NGINX နှစ်ခုလုံးကို ပြန်လည်စတင်ပါ။ ပြန်လည်စတင်မည့် အစား ပြန်လည်စတင်ရန် လုံလောက် နိုင်သော်လည်း မည်သည့်ဆက်တင်များကို ပြောင်းလဲထားသည်ပေါ်မူတည်၍ အနည်းငယ်ထိခိုက်ပြီး လွဲချော်သွားသည်ကို ကျွန်ုပ်တွေ့မြင်ရပါသည်။ အထူးသဖြင့်၊ PHP-FPM ကလေးလုပ်ငန်းစဉ်ဟောင်းများကို ချက်ချင်းသေစေလိုသောကြောင့် PHP-FPM ကို ပြန်လည်စတင်ရန် လိုအပ်သော်လည်း NGINX အတွက် ပြန်လည်စတင်ခြင်းသည် လုံလောက်ပါသည်။ ကိုယ်တိုင်ကြိုးစားကြည့်ပါ။
sudo service nginx restart
ကဲ ဒါဆိုရင်တော့ ပြီးပါပြီ။ သင်အရာရာတိုင်းကို မှန်ကန်စွာလုပ်ဆောင်ခဲ့ပါက၊ သင်ပြုပြင်ထားသော virtual host သည် ယခု PHP-FPM pool အသစ်ကို အသုံးပြုနေပြီး ကလေးလုပ်ငန်းစဉ်များကို အခြား virtual host များနှင့် မမျှဝေသင့်ပါ။