VPS पर Node.js को हमेशा चालू सर्विस की तरह चलाएं
यह उदाहरण Ubuntu या Debian पर systemd इस्तेमाल करता है। मान लिया गया है कि आपके पास रिव्यू किया हुआ Node.js ऐप और सपोर्टेड Node.js इंस्टॉलेशन पहले से है। पाथ और एंट्री पॉइंट अपने प्रोजेक्ट के हिसाब से बदलें।
चरण
एक अलग सर्विस यूजर और निजी रिलीज डायरेक्टरी बनाएं। रिव्यू किया हुआ प्रोजेक्ट वहीं डिप्लॉय करें, और उसका ओनर वही यूजर रखें। डिपेंडेंसी इंस्टॉल और बिल्ड उसी यूजर से चलाएं, root से नहीं।
bashsudo adduser --system --group --home /srv/apnapp apnapp sudo install -d -o apnapp -g apnapp /srv/apnapp/currentलॉक की गई डिपेंडेंसी इंस्टॉल करें, प्रोडक्शन रिलीज बिल्ड करें और ऐप को 127.0.0.1:3000 पर सुनने के लिए सेट करें। environment सेटिंग तभी काम करती हैं जब ऐप उन्हें पढ़ता हो। सीक्रेट सोर्स रिपोजिटरी में नहीं, सीमित अनुमति वाली environment फाइल में रखें।
bashsudo test -e /etc/apnapp.env || sudo install -o root -g apnapp -m 640 /dev/null /etc/apnapp.env command -v nodeनीचे दिए कॉन्फ़िगरेशन से /etc/systemd/system/apnapp.service बनाएं। Node executable का पाथ, वर्किंग डायरेक्टरी और एंट्री फाइल अपने हिसाब से बदलें। environment फाइल निजी तौर पर भरें। सीक्रेट वाली मौजूदा फाइल ओवरराइट न करें।
ini[Unit] Description=APNCloud application After=network.target [Service] User=apnapp Group=apnapp WorkingDirectory=/srv/apnapp/current Environment=NODE_ENV=production EnvironmentFile=/etc/apnapp.env ExecStart=/usr/bin/node /srv/apnapp/current/server.js Restart=on-failure RestartSec=5 NoNewPrivileges=true PrivateTmp=true [Install] WantedBy=multi-user.targetयूनिट वैलिडेट करें, उसे चालू करें और लॉग देखें। कोई भी रूट पब्लिश करने से पहले स्टार्टअप की त्रुटियां ठीक करें।
bashsudo systemd-analyze verify /etc/systemd/system/apnapp.service sudo systemctl daemon-reload sudo systemctl enable --now apnapp sudo journalctl -u apnapp -n 50 --no-pager curl -I http://127.0.0.1:3000/रिलीज के बाद सर्विस रीस्टार्ट करें और हेल्थ जांचें। रीबूट टेस्ट की योजना बनाएं और रोलबैक के लिए पिछली रिलीज रखें। रीस्टार्ट से रिक्वेस्ट कुछ देर के लिए रुक सकती हैं।
समस्या होने पर
शेल में ऐप चलता है लेकिन सर्विस के रूप में फेल होता है, तो executable का पाथ, अनुमतियां, वर्किंग डायरेक्टरी और environment की तुलना करें। अनुमति की समस्या टालने के लिए सर्विस को root से न चलाएं। अपलोड और स्थायी डेटा के लिए ऐप के अपने writable डायरेक्टरी इस्तेमाल करें।
संबंधित गाइड
अंतिम समीक्षा
2026-10-28
