Own Service ကို systemd နဲ့ startup လုပ်တာ env ကြောင့်အလုပ်မလုပ်တာလေး
ပြီးခဲ့တဲ့ တပတ်ကျော်လောက်က ရုံးက ထုံးစံအတိုင်းပဲ java နဲ့ ရေးထားတဲ့ service တခုကို boot အတက်မှာ running ဖြစ်အောင်လုပ်ပေးပါဆိုတော့ ဒါလေးများ easyquizzy လုပ်နေကြပဲ ဆိုပြီး script ရေးပြီး ထည့်တာပေ့ါလေ။ ဘယ်လိုလုပ်လဲက အွန်လိုင်းမှာ လိုက်ရှာကြည့်လို့ရပါတယ်။ ကျွန်တော်က တော်တော်များများ အလွတ်မရတဲ့လူဆိုတော့ လုပ်ခါနီးမှ အရင် document တွေက ပြန်ကြည့်ရင် ကြည့်၊ မကြည့်ရင် အွန်လိုင်းကနေပဲ လိုက်ရှာပြီး လုပ်တာများတယ်။ အဲ့တော့ သည် link ကနေ Reference ယူပြီး လုပ်လိုက်ပါတယ်။
အဲ့ဒါပြီးတော့
$ sudo systemctl start servicename
နဲ့ service start လုပ်တော့ အလုပ်မလုပ်တာပဲ တွေ့တယ်။
$ sudo systemctl status -l servicename နဲ့ကြည့်တော့လဲ program က အလုပ်မလုပ်ဘဲ exit ထွက်သွားတာပဲ တွေ့ရတယ် ဘာဖြစ်တာလဲ မတွေ့ရဘူး။ script မှာများ error တက်နေသလားဆိုပြီး ပြန်စစ်ကြည့်တော့ script ကိုသည်တိုင်း run ရင်ရတယ်။ ဘာပြဿနာမှ မတက်။ နောက်ဆုံး systemd နဲ့ startup မှာမထည့်ဘဲ rc.local ထဲမှာ boot တက်လာရင် service run အောင်သွားထည့်တော့လဲ အလုပ်မလုပ်။ ဒါပေမယ့် rc.local ကို သည်တိုင်း execute လုပ်ရင် အလုပ်လုပ်တယ်ဆိုတော့ "ဟာ ဘာလဲ" ပေ့ါ။ အချိန်တွေကြာချက်ပဲ။
လုပ်နေရင်းနဲ့ teammate တယောက်က အစ်ကို အဲ့ဒါကို systemctl -u servicename နဲ့စစ်ကြည့်ရင် ဘာပြဿနာတက်နေတာလဲ detailed ပြတယ်ဆိုမှ တွေ့တော့တယ်။ ကျေးဇူးပါ ကျော်ဇင်ရေ။ -u နဲ့ စစ်ရင်ကြတော့ systemd unit ရဲ့ message ကို အသေးစိတ်ပြတယ်။ အဲ့ကြတော့မှ java နဲ့ ဘယ် host မှာ run တာလဲဆိုတာကို သိဖို့ ရိုက်ထုတ်တဲ့ variable က systemd မှာ သည်တိုင်းအလုပ်မလုပ်တာကို သိရတယ်။
Developer နဲ့ ညှိကြည့်တော့လည်း အဲ့ဒါက မလုပ်လို့မရဘူး ကျွန်တော်တို့ EC2 တွေ အများကြီးပေါ်မှာ loadbalcing roundrobin နဲ့သွားထားတာဆိုတော့ hostname ရိုက်ထုတ်ပေးဖို့ လိုကိုလိုတာဆိုတော့ သူ့ program ကို ပြင်ပေးဖို့လည်း မဖြစ်နိုင်ဘူး။ နောက်တခုက developer ပြဿနာလည်း မဟုတ်ဘူး။ သူ့ program ကို script ထဲထည့်ပြီး သည်တိုင်း run ရင် အလုပ်လုပ်တယ်။ ကျွန်တော်တို့ ဘက်ကကြတော့လည်း autoscaling နဲ့ server တွေထပ်တိုးလာတဲ့အခါ ဘယ် ဆာဗာမှာဖြစ်တာလဲဆိုတာ log ထဲမပေါ်လို့ မရဘူး။ manul သွား run ပေးဖို့လည်း အဆင်မပြေဘူး။ system အတက်မှာ boot အတက်မှာ သည်ဆားဗစ်က run ကို run နေရမှာဆိုတော့ လိုက်ရှာရပြန်တယ်။
အဲ့သည့် Program ကိုရေးတဲ့ developer ညီလေး က အစ်ကို ကျွန်တော်တို့ ဖြစ်နေတဲ့ပြဿနာ က enviroment ထည့်ပေးရမှာ systemd service မှာဆိုပြီး လာပြပေးတယ်။ ကျေးဇူးပါ ဘုန်းမြင့်ရေ။
Ref: https://serverfault.com/questions/413397/how-to-set-environment-variable-in-systemd-service%22
အဲ့ဒါတွေ ပြင်ပြီးမှပဲ ကျွန်တော်တို့ လုပ်ချင်တဲ့ system (boot) အတက်မှာ ကိုယ့်ဆားဗစ်လေးတက်လာဖို့ လုပ်တာ ပြီးတော့တယ်။ Teammate တွေ ကောင်းတာနဲ့ Team work ကောင်းတော့လည်း အဆင်ပြေတာပါပဲ။ "ဆပ်ပြာကောင်းလို့ ခေါင်းပေါင်းဖြူ" ဆိုသလိုပေါ့လေ။
တကယ်တော့ IT field ထဲက ပြဿနာတော်တော်များများက ဖြစ်ပြီးသားတွေချည်းပါပဲ။ ကိုယ့်ပြဿနာက အသစ်ဖြစ်နေတော့လည်း ကောင်းတာပါပဲ ဖိုရမ်တွေမှာ လိုက်မေးပေါ့လေ။ Teammate တွေကောင်းရင် teamwork ကောင်းရင်လည်း ပျော်ဖို့ကောင်းတာပါပဲ။ အခု အလုပ်လုပ်နေတဲ့ ရုံးကတော့ teamwork တကယ်ကို ကောင်းကြပါတယ်။
ကျေးဇူးပါ ကိုကျော်ဇင်၊ ကိုဘုန်းမြင့်၊ ကိုကျော်စွာ။
