परिचय: लोकल सर्वर से प्रोडक्शन-रेडी समाधान तक
\nआपने Node.js पर एक शक्तिशाली JavaScript एप्लिकेशन बनाया है, इसे लोकल रूप से परीक्षण किया है, और अब इसे दुनिया को दिखाने का समय आ गया है। केवल VPS पर फ़ाइलें अपलोड करना और node app.js चलाना — यह शुरुआती का तरीका है। उन्नत स्तर पर, डिप्लॉयमेंट में रिवर्स प्रॉक्सी सर्वर, प्रोसेस मैनेजर, SSL प्रमाणपत्रों का स्वचालित नवीनीकरण, सतत एकीकरण और वितरण (CI/CD) प्रणाली, साथ ही उचित मॉनिटरिंग और लॉगिंग शामिल है।
इस लेख में, हम VPS (Ubuntu 22.04) पर Node.js एप्लिकेशन के डिप्लॉयमेंट की उन्नत स्तर की चरण-दर-चरण प्रक्रिया पर चर्चा करेंगे। हम Nginx को reverse proxy के रूप में, PM2 को प्रक्रिया प्रबंधन के लिए, Let's Encrypt को HTTPS के लिए, GitHub Actions को रिपॉजिटरी में पुश करने पर स्वचालित डिप्लॉय के लिए कॉन्फ़िगर करेंगे, और बुनियादी मॉनिटरिंग जोड़ेंगे।
\n\nपूर्वापेक्षाएँ
\n- \n
- SSH एक्सेस वाला VPS सर्वर (Ubuntu 22.04)। \n
- आपके सर्वर के IP से जुड़ा एक डोमेन (उदाहरण के लिए,
myapp.example.com)। \n - सर्वर पर स्थापित Node.js (v18+) और npm। \n
- सर्वर पर स्थापित Git। \n
- GitHub पर आपके एप्लिकेशन का रिपॉजिटरी। \n
1. सर्वर और प्रोसेस मैनेजर PM2 की सेटिंग
\nहम पर्यावरण की बुनियादी तैयारी से शुरू करते हैं। SSH के माध्यम से सर्वर से कनेक्ट करने के बाद, पैकेज अपडेट करें और आवश्यक उपयोगिताएँ स्थापित करें:
\nsudo apt update && sudo apt upgrade -y\nsudo apt install nginx git curl -y\nसुनिश्चित करें कि Node.js स्थापित है। यदि नहीं है, तो NodeSource के माध्यम से स्थापित करें:
\ncurl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -\nsudo apt install -y nodejs\nnode -v\nnpm -v\nअब वैश्विक रूप से PM2 स्थापित करें — Node.js के लिए एक उन्नत प्रक्रिया प्रबंधक, जो क्रैश होने पर एप्लिकेशन को स्वचालित रूप से पुनरारंभ करता है, लॉग प्रबंधित करता है और क्लस्टरिंग करता है:
\nsudo npm install -g pm2\nअपने एप्लिकेशन के रिपॉजिटरी को क्लोन करें और निर्भरताएँ स्थापित करें:
\ngit clone https://github.com/आपका-उपयोगकर्ता-नाम/आपका-रिपॉजिटरी.git /var/www/myapp\ncd /var/www/myapp\nnpm install --production\nबारीक ट्यूनिंग के लिए PM2 इकोसिस्टम फ़ाइल (ecosystem.config.js) बनाएँ:
// ecosystem.config.js\nmodule.exports = {\n apps: [{\n name: 'myapp',\n script: 'app.js', // या server.js\n instances: 'max', // सभी CPU कोर का उपयोग करें\n exec_mode: 'cluster',\n env: {\n NODE_ENV: 'production',\n PORT: 3000\n },\n error_file: '/var/log/node-app/err.log',\n out_file: '/var/log/node-app/out.log',\n log_date_format: 'YYYY-MM-DD HH:mm Z'\n }]\n};\nलॉग के लिए एक निर्देशिका बनाएँ और PM2 के माध्यम से एप्लिकेशन चलाएँ:
\nsudo mkdir -p /var/log/node-app\nsudo chown -R $USER:$USER /var/log/node-app\npm2 start ecosystem.config.js\npm2 save\npm2 startup systemd\npm2 startup कमांड एक systemd सेवा बनाएगा जो सिस्टम स्टार्टअप पर PM2 को शुरू करेगा। अब आपका एप्लिकेशन पोर्ट 3000 पर चल रहा है, लेकिन इस तक सीधी पहुँच असुरक्षित है। अब Nginx सेटिंग की ओर बढ़ते हैं।
2. Nginx को reverse proxy और Let's Encrypt के माध्यम से SSL के रूप में सेट करना
\nNginx पोर्ट 80 (HTTP) और 443 (HTTPS) पर आने वाले अनुरोधों को प्राप्त करेगा, उन्हें आपके पोर्ट 3000 पर चल रहे Node.js प्रक्रिया पर प्रॉक्सी करेगा, और स्थिर फ़ाइलों को सीधे सर्व करेगा — इससे Node.js पर लोड कम होता है।
\nअपने डोमेन के लिए एक कॉन्फ़िगरेशन फ़ाइल बनाएँ:
\nsudo nano /etc/nginx/sites-available/myapp\nनिम्नलिखित कॉन्फ़िगरेशन डालें (myapp.example.com को अपने डोमेन से बदलें):
server {\n listen 80;\n server_name myapp.example.com;\n return 301 https://$server_name$request_uri; # HTTPS पर रीडायरेक्ट\n}\n\nserver {\n listen 443 ssl http2;\n server_name myapp.example.com;\n\n # SSL सर्व