PM2 JavaScript (Node.js) के लिए: पूर्ण गाइड उदाहरण सहित
1. यह क्या है और इसकी आवश्यकता क्यों है
PM2 (Process Manager 2) Node.js एप्लिकेशन के लिए एक शक्तिशाली प्रोसेस मैनेजर है, जिसे प्रोडक्शन एनवायरनमेंट में उपयोग के लिए डिज़ाइन किया गया है। यह Node.js एप्लिकेशन को शुरू, रोक, रीलोड और मॉनिटर करने की अनुमति देता है, जिससे उच्च उपलब्धता और फॉल्ट टॉलरेंस सुनिश्चित होती है। PM2 स्वचालित रूप से क्रैश हुए प्रोसेस को रीस्टार्ट करता है, कई एप्लिकेशन इंस्टेंस के बीच लोड वितरित करता है (क्लस्टरिंग), एक इनबिल्ट लोड बैलेंसर प्रदान करता है, और बिना डाउनटाइम के ग्रेसफुल रीलोड को सपोर्ट करता है।
प्रोडक्शन एनवायरनमेंट में, Node.js एप्लिकेशन अक्सर अप्रत्याशित एरर, मेमोरी लीक या ओवरलोड का सामना करते हैं। PM2 एक "डेमन गार्जियन" के रूप में कार्य करके इन समस्याओं को हल करता है: यह प्रत्येक प्रोसेस की स्थिति को ट्रैक करता है, stdout/stderr को लॉग करता है, प्रदर्शन मेट्रिक्स (CPU, मेमोरी) प्रदान करता है, और आपको CLI या API के माध्यम से एप्लिकेशन को मैनेज करने देता है। PM2 के बिना, डेवलपर को रीस्टार्ट, मॉनिटरिंग और स्केलिंग के लिए मैन्युअल रूप से स्क्रिप्ट लिखनी पड़ती — PM2 इन सभी कार्यों को ऑटोमेट करता है।
PM2 की प्रमुख क्षमताओं में शामिल हैं: क्लस्टरिंग (सभी CPU कोर पर कई वर्कर चलाना), जीरो-डाउनटाइम रीलोड, एनवायरनमेंट मैनेजमेंट (development/production), इनबिल्ट मॉनिटरिंग (pm2 monit), कॉन्फ़िगरेशन फ़ाइलों (ecosystem.config.js) का सपोर्ट, और सर्वर स्टार्टअप पर ऑटो-स्टार्ट के लिए इनिशियलाइज़ेशन सिस्टम (systemd, upstart) के साथ इंटीग्रेशन।
2. इंस्टॉलेशन
PM2 को npm (Node Package Manager) के माध्यम से ग्लोबली इंस्टॉल किया जाता है। सटीक कमांड:
npm install -g pm2
किसी विशिष्ट वर्जन को इंस्टॉल करने के लिए:
npm install -g pm2@5.3.0
इंस्टॉलेशन के बाद वर्जन चेक करें:
pm2 --version
3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण
एक सरल Node.js एप्लिकेशन app.js बनाएं:
// app.js
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('PM2 से नमस्ते!\n');
});
const PORT = process.env.PORT || 3000;
server.listen(PORT, () => {
console.log(`सर्वर पोर्ट ${PORT} पर चल रहा है`);
});
PM2 के माध्यम से एप्लिकेशन चलाएं:
pm2 start app.js --name my-app
स्टेटस चेक करें:
pm2 status
एप्लिकेशन रोकें:
pm2 stop my-app
4. मुख्य तरीके/फंक्शन/क्लास
4.1. pm2.start() — एप्लिकेशन शुरू करना
सिग्नेचर: pm2.start(script, options, callback)
यह क्या करता है: निर्दिष्ट स्क्रिप्ट को दिए गए विकल्पों (नाम, इंस्टेंस की संख्या, एनवायरनमेंट वेरिएबल) के साथ PM2 प्रोसेस के रूप में शुरू करता है।
कार्यशील कोड उदाहरण:
const pm2 = require('pm2');
pm2.connect((err) => {
if (err) {
console.error(err);
process.exit(2);
}
pm2.start({
script: 'app.js',
name: 'my-app',
instances: 2, // 2 इंस्टेंस शुरू करें
exec_mode: 'cluster', // क्लस्टर मोड
env: {
NODE_ENV: 'production',
PORT: 3000
}
}, (err, apps) => {
if (err) {
console.error(err);
return pm2.disconnect();
}
console.log('एप्लिकेशन शुरू:', apps);
pm2.disconnect();
});
});
4.2. pm2.stop() — प्रोसेस रोकना
सिग्नेचर: pm2.stop(process, callback)
यह क्या करता है: निर्दिष्ट प्रोसेस को रोकता है (नाम, ID या सभी प्रोसेस के आधार पर)।
कार्यशील कोड उदाहरण:
const pm2 = require('pm2');
pm2.connect((err) => {
if (err) {
console.error(err);
process.exit(2);
}
// प्रोसेस रोकें
pm2.stop('my-app', (err, proc) => {
if (err) {
console.error(err);
return pm2.disconnect();
}
console.log('प्रोसेस रोका गया:', proc);
pm2.disconnect();
});
});