PM2 — Process Manager
এই page-এ শিখবেন PM2 দিয়ে app background-এ চালু করতে, crash হলে auto-restart করতে, server reboot-এ app আবার উঠানোর ব্যবস্থা করতে এবং real-time log দেখতে।
Why PM2?
আপনি যদি সরাসরি npm run start দিয়ে app চালান তবে তিনটি সমস্যা আছে:
সমস্যা ১ — Terminal বন্ধ হলে app বন্ধ: Terminal-এর সাথে app-এর connection আছে। Terminal বন্ধ করলে বা SSH disconnect হলে app মরে যায়।
সমস্যা ২ — Crash হলে কেউ restart করে না: কোনো error-এর কারণে app crash করলে সেটি বন্ধ হয়ে পড়ে থাকে — আপনি manually restart না করা পর্যন্ত।
সমস্যা ৩ — Server reboot হলে app উঠে না: VPS বা EC2 reboot (update, maintenance) হলে app আর চালু হয় না।
PM2 এই তিনটি সমস্যাই সমাধান করে। এটি আপনার app-কে একটি system service হিসেবে চালায়।
Install PM2
npm install -g pm2Installation verify করুন:
pm2 --versionStart the App
আপনার project folder-এ গিয়ে PM2 দিয়ে app চালু করুন:
cd ~/YOUR_REPO
pm2 start npm --name "myapp" -- startCommand breakdown:
pm2 start— PM2-কে একটি নতুন process শুরু করতে বলছেnpm— process হিসেবেnpmচালাবে--name "myapp"— process-এর একটি নাম দিচ্ছে যাতে পরে সহজে manage করা যায়-- start— npm-কেstartscript চালাতে বলছে (অর্থাৎnpm run start)
App-এর status দেখুন:
pm2 liststatus column-এ online দেখলে app সফলভাবে চলছে।
Enable Auto-Restart on Reboot
Server reboot হলে PM2 যাতে নিজে থেকে app চালু করে তার জন্য দুটি কাজ করতে হবে:
প্রথমে current PM2 process list save করুন:
pm2 saveএরপর system startup script generate করুন:
pm2 startupএই command একটি দীর্ঘ command output করবে, দেখতে এরকম:
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/home/queen/.nvm/versions/node/v20.x.x/bin pm2 startup systemd -u queen --hp /home/queenওই sudo env PATH=... দিয়ে শুরু হওয়া পুরো command-টি copy করে run করুন।
pm2 startup শুধু command print করে — নিজে execute করে না। আপনাকে সেই command manually run করতে হবে। অনেকে এই ধাপ মিস করেন।
View Logs
App কি সঠিকভাবে চলছে? কোনো error আছে? Real-time log দেখুন:
pm2 logs myappশুধু error log দেখতে:
pm2 logs myapp --errLog বন্ধ করতে Ctrl+C চাপুন।
PM2-এর log ফাইলগুলো ~/.pm2/logs/ folder-এ থাকে। App-এর নাম অনুযায়ী দুটি ফাইল থাকে:
myapp-out.log— সাধারণ output (console.log)myapp-error.log— শুধু error messages
Essential Commands
pm2 list # সব running process দেখুন
pm2 logs myapp # real-time log দেখুন
pm2 logs myapp --lines 50 # শেষ ৫০ লাইন log দেখুন
pm2 restart myapp # app restart করুন
pm2 stop myapp # app বন্ধ করুন
pm2 start myapp # বন্ধ app চালু করুন
pm2 delete myapp # PM2 থেকে app সরিয়ে দিন
pm2 monit # real-time CPU ও memory দেখুনUpdate Workflow
নতুন code deploy করার সময় full workflow:
cd ~/YOUR_REPO
git pull
npm install # নতুন package যোগ হলে
npm run build
pm2 restart myappnpm install কখন করবেন? যদি package.json-এ নতুন dependency যোগ হয়ে থাকে তবেই করতে হবে। শুধু code change হলে npm install skip করা যায়।
CyberSec Note
Log Analysis হলো Security-র চোখ। pm2 logs দিয়ে আপনি দেখতে পাবেন কারা আপনার app-এ unusual request পাঠাচ্ছে। যেমন:
- বারবার
/admin,/wp-login.php,/phpmyadminrequest আসছে — এগুলো automated scanner-এর sign - অনেক বেশি 4xx error — কেউ আপনার API-তে brute-force করছে
- অস্বাভাবিক সময়ে (রাত ৩টায়) হঠাৎ traffic বাড়া
pm2 monit দিয়ে CPU ও memory একটু বেশি দেখলে সন্দেহ করুন — কোনো malicious process চলছে কিনা।
এই কারণেই log নিয়মিত দেখা একটি ভালো security practice।
Quick Check
-
pm2 listদেখাচ্ছে apponlinestatus-এ? -
pm2 startupcommand run করা হয়েছে? -
pm2 saveকরা হয়েছে? -
pm2 logs myappদেখালে কোনো critical error নেই?
পরবর্তী → First Deployment