Skip to Content
DocsServer DeploymentFoundationPM2 — Process Manager

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

SERVER — Terminal
npm install -g pm2

Installation verify করুন:

SERVER — Terminal
pm2 --version

Build the App First

PM2 দিয়ে app চালু করার আগে অবশ্যই build করতে হবে।

npm run start কোনো code compile করে না — এটি শুধু .next folder-এ থাকা তৈরি করা production build চালায়। Build না করে pm2 start দিলে app চালু হবে না এবং PM2-তে errored status দেখাবে।

Error টি হবে: Could not find a production build in the '.next' directory

SERVER — Terminal
cd ~/myapp npm install npm run build

npm install আপনার project-এর সব dependency নামিয়ে আনে, আর npm run build source code-কে optimized production bundle-এ রূপান্তর করে .next folder-এ রাখে।

Start the App

এবার PM2 দিয়ে app চালু করুন:

SERVER — Terminal
pm2 start npm --name "myapp" -- start

Command breakdown:

  • pm2 start — PM2-কে একটি নতুন process শুরু করতে বলছে
  • npm — process হিসেবে npm চালাবে
  • --name "myapp" — process-এর একটি নাম দিচ্ছে যাতে পরে সহজে manage করা যায়
  • -- start — npm-কে start script চালাতে বলছে (অর্থাৎ npm run start)

App-এর status দেখুন:

SERVER — Terminal
pm2 list

status column-এ online দেখলে app সফলভাবে চলছে। errored দেখলে বা restart count বাড়তে থাকলে pm2 logs myapp দিয়ে কারণ দেখুন।

Enable Auto-Restart on Reboot

Server reboot হলে PM2 যাতে নিজে থেকে app চালু করে তার জন্য দুটি কাজ করতে হবে:

প্রথমে current PM2 process list save করুন:

SERVER — Terminal
pm2 save

এরপর system startup script generate করুন:

SERVER — Terminal
pm2 startup

এই command একটি দীর্ঘ command output করবে, দেখতে এরকম:

[PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/home/ubuntu/.nvm/versions/node/v20.x.x/bin pm2 startup systemd -u ubuntu --hp /home/ubuntu

ওই sudo env PATH=... দিয়ে শুরু হওয়া পুরো command-টি copy করে run করুন।

pm2 startup শুধু command print করে — নিজে execute করে না। আপনাকে সেই command manually run করতে হবে। অনেকে এই ধাপ মিস করেন।

উপরের output-এ লক্ষ্য করুন path-এ Node-এর version number লেখা আছে (v20.x.x)। ভবিষ্যতে nvm install --lts দিয়ে Node upgrade করলে এই path বদলে যাবে এবং পুরনো path আর থাকবে না।

ফলে server reboot হলে PM2 আপনার app চালু করতে পারবে না — কোনো error ছাড়াই site down হয়ে যাবে। Node upgrade করার পর সবসময় pm2 unstartup দিয়ে পুরনো setting মুছে আবার pm2 startup চালাবেন।

View Logs

App কি সঠিকভাবে চলছে? কোনো error আছে? Real-time log দেখুন:

SERVER — Terminal
pm2 logs myapp

শুধু error log দেখতে:

SERVER — Terminal
pm2 logs myapp --err

Log বন্ধ করতে Ctrl+C চাপুন।

PM2-এর log ফাইলগুলো ~/.pm2/logs/ folder-এ থাকে। App-এর নাম অনুযায়ী দুটি ফাইল থাকে:

  • myapp-out.log — সাধারণ output (console.log)
  • myapp-error.log — শুধু error messages

Essential Commands

SERVER — Terminal
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:

SERVER — Terminal
cd ~/myapp git pull npm install # নতুন package যোগ হলে npm run build pm2 restart myapp

npm install কখন করবেন? যদি package.json-এ নতুন dependency যোগ হয়ে থাকে তবেই করতে হবে। শুধু code change হলে npm install skip করা যায়।

Real-World Note

Log Analysis হলো Security-র চোখ। pm2 logs দিয়ে আপনি দেখতে পাবেন কারা আপনার app-এ unusual request পাঠাচ্ছে। যেমন:

  • বারবার /admin, /wp-login.php, /phpmyadmin request আসছে — এগুলো automated scanner-এর sign
  • অনেক বেশি 4xx error — কেউ আপনার API-তে brute-force করছে
  • অস্বাভাবিক সময়ে (রাত ৩টায়) হঠাৎ traffic বাড়া

pm2 monit দিয়ে CPU ও memory একটু বেশি দেখলে সন্দেহ করুন — কোনো malicious process চলছে কিনা।

এই কারণেই log নিয়মিত দেখা একটি ভালো security practice।

Quick Check

  • pm2 list দেখাচ্ছে app online status-এ?
  • pm2 startup command run করা হয়েছে?
  • pm2 save করা হয়েছে?
  • pm2 logs myapp দেখালে কোনো critical error নেই?

পরবর্তী → First Deployment

pm2 bangla tutorial, process manager bangla, pm2 startup bangla, pm2 logs bangla, nextjs pm2 bangla, node.js production server bangla, pm2 restart bangla, pm2 save bangla

Last updated on