
Node application တွေရေးသားကြရမှာ ကိုယ်ရေးသားထားတဲ့ application run ဖို့အတွက် node app.js
လို့ရေးလိုက်တာနဲ့ node server run သွားပြီး စတင်အသုံးပြုလို့ရမှာဖြစ်ပါတယ်။
ဒါပေမဲ့ အရေးကြီးတာက ဒီနည်းလမ်းက development လုပ်နေချိန်အတွင်းမှာ အဆင်ပြေ လွယ်ကူတယ် ဆိုပေမဲ့ ကိုယ့်ရဲ့ application ကို server ပေါ်ကို တင်တဲ့အချိန်မှာ ပြဿနာတက်ပါတော့တယ်။
ဘာလို့လဲ့ဆိုတော့ node server ကို run လိုက်ရင် command line မှာ အခုလိုပြနေမှာပါ။

command line ကနေထွက်လိုက်တာနဲ့ node application ကရပ်သွားမှာဖြစ်ပါတယ်။ ဆိုတော့ command line ကလည်း ဒီတိုင်းကြီးဖွင့်ထားဖို့ အဆင်မပြေတဲ့အခါ အခုလို node application တွေကို အမြဲတမ်း run ပေးထားမဲ့ tool တစ်ခုလိုအပ်လာပါတယ်။
PM2
PM2 ဆိုတာ node js အတွက် process manager တစ်ခုပါ။ သူ့ကိုသုံးပြီးတော့ node application ကိုအမြဲတမ်း run နေအောင်လုပ်နိုင်ပါတယ်။ install လုပ်ဖို့ဆိုရင် ဒီလိုလုပ်လို့ရပါတယ်။
npm install pm2 -g
install လုပ်ပြီးသွားပြီဆိုရင် ကိုယ့်ရဲ့ node application ကို node app.js
အစား ဒီလို run ပါ။
pm2 start app.js -n app
-n
နဲ့ process name ကိုသတ်မှတ်လိုက်တာပါ။ Run လိုက်တာနဲ့အခုလို process table ပြပေးမှာဖြစ်ပါတယ်။

pm2 မှာ run နေတဲ့ application list ကိုသိချင်ရင် ဒီ command နဲ့ကြည့်ပါ။
pm2 list
ဒါဆိုရင်အခုလို run နေတဲ့ app list ကိုပြပေးမှာပါ။

run နေတာရပ်ချင်ရင်တော့ အပေါ်ကသတ်မှတ်ခဲ့တဲ့ process name ကိုသုံးပြီးအခုလို ရပ်လို့ရပါတယ်။
pm2 stop app

Server restart ချလိုက်လည်း PM2 ကို auto ပြန်run အောင် အခုလို လုပ်နိုင်ပါတယ်။
pm2 startup
ဒါဆိုရင် run ဖို့ command ကို ပြောပေးပါလိမ့်မယ်။

copy ကူးပြီးrun လိုက်ပါ။

ဒီလိုပေါ်လာရင်တော့ ရပြီပဲဖြစ်ပါတယ်။
ခုဆိုရင် node application ဟာ server ပေါ်မှာအမြဲတမ်း run နေပြီဖြစ်ပါတယ်။ ဒါ့ကြောင့် Nginx နဲ့ proxy လုပ်ပေးဖို့ ဆက်လုပ်ပေးရပါမယ်။
Node application တွေကို Nginx မလိုပဲနဲ့ တိုက်ရိုက် သုံးလို့ရပါတယ်၊ ဒါပေမဲ့ production level မှာတော့ security နဲ့ performance ပိုကောင်းဖို့အတွက် Nginx ကို reverse proxy အနေနဲ့ထားသုံးသင့်ပါတယ်။ အသေးစိတ်ကို ဒီမှာ လေ့လာနိုင်ပါတယ်။
Nginx
Nginx ဆိုတာ web server တစ်ခုဖြစ်ပါတယ်။ install ပြုလုပ်ဖို့အတွက် run ပါ။
sudo apt-get install nginx
Install လုပ်ပြီးပြီဆိုရင် configure လုပ်ဖို့ ဒီဟာကို run ပေးပါ။
sudo nano /etc/nginx/sites-enabled/default
Configure ပြုလုပ်ဖို့အတွက် server block အတွင်းမှာ location /
ကိုရှာပါ။ အဲ့ဒီ block အတွင်းမှာ အောက်က စာတွေကို replace လုပ်ပေးပါ။ ကိုယ့် application က port 8080 မဟုတ်ဘူးဆိုရင် ပြင်ပေးဖို့ မမေ့ပါနဲ့။
location /{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:8080/;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;
}
အကယ်၍ ကိုယ့်မှာ node application တွေအများကြီးရှိတယ်ဆိုရင် ဒီလို block တွေကို ထပ်ထည့်ပေးလို့ရပါတယ်။ ဥပမာ-
location /app2{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:8081/;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;
}
ဒီလိုရေးလိုက်တာနဲ့ app.example.com/app2 လို့ခေါ်ရင် port 8081 မှာ run နေတဲ့ node application ကိုခေါ်ပေးသွားမှာ ဖြစ်ပါတယ်။
ပြင်ပြီးသွားရင်တော့ nginx server ကိုမစခင် typo အမှားပါမပါနဲ့ configure လုပ်တာ အဆင်ပြေမပြေ သိစေဖို့အတွက်ဒီ command နဲ့ စစ်လို့ရပါတယ်။
sudo nginx -t
အားလုံးအဆင်ပြေရင်တော့ဒီလိုပေါ်လာမှာပါ။

အခုဆိုရင်တော့ nginx ကို စrun လို့ရပါပြီ။
sudo systemctl start nginx
ပြီးရင်တော့ browser ကနေသင့်ရဲ့ node application တွေကို ခေါ်ယူကြည့်လို့ ရပြီဖြစ်ပါတယ်။ အကယ်၍ Nginx ရဲ့ welcome screen ပဲ ပေါ်နေရင်တော့ sudo systemctl restart nginx
နဲ့ restart ပြုလုပ်ပြီး browser ကို shift refresh ပြုလုပ်ပေးပါ။
ပြီးပါပြီ
ဒီလောက်ဆိုရင်တော့ node application တွေကို Nginx အသုံးပြုပြီး ဘယ်လို deploy လုပ်မလဲဆိုတာ သိလောက်ပြီလို့ ယူဆပါတယ်။
REFERENCE#1: https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04
REFERENCE#2: https://www.npmjs.com/package/pm2