बूट पर ऑटो स्टार्ट नोड.जेएस सर्वर


87

क्या कोई नोड। जेएस विशेषज्ञ मुझे बता सकते हैं कि मैं अपने मशीन बूट के दौरान एक सर्वर को ऑटोस्टार्ट करने के लिए नोड जेएस को कैसे कॉन्फ़िगर कर सकता हूं? मैं विंडोज पर हूँ


5
stackoverflow.com/questions/20426652/… आपने पिछली बार की तुलना में यह कैसे अलग है?
वायर्डप्राइ

1) आपका आखिरी सवाल Winblows के लिए है, प्लेटफ़ॉर्म के आधार पर उत्तर मौलिक रूप से भिन्न होंगे; 2) अगर लिनक्स पर, सबसे आसान काम शायद आपके डिस्ट्रो के प्रोसेस मैनेजर (सिसविनीट, अपस्टार्ट, सिस्टमड) का उपयोग करना होगा
TC1

दुर्भाग्य से Winblows पर, इसे प्रतिबिंबित करने के लिए संपादित किया गया
Bachalo

2
फिर यह प्रश्न आपके अन्य प्रश्न से कैसे अलग है?
हेक्सासैनाइड

1
वह आखिरी सवाल पर एकमात्र जवाब से खुश नहीं थे, इसलिए उन्होंने इसे एक इनाम के साथ फिर से पूछा।
नाहन

जवाबों:


172

यह नोड.जेएस में कॉन्फ़िगर करने के लिए कुछ नहीं है, यह विशुद्ध रूप से ओएस जिम्मेदारी है (आपके मामले में विंडोज)। इसे प्राप्त करने का सबसे विश्वसनीय तरीका विंडोज सर्विस है।

यह सुपर आसान मॉड्यूल है जो एक नोड स्क्रिप्ट को विंडोज़ सेवा के रूप में स्थापित करता है, इसे नोड-विंडोज़ ( एनपीएम , जीथब , प्रलेखन ) कहा जाता है। मैंने पहले इस्तेमाल किया है और एक आकर्षण की तरह काम किया है।

var Service = require('node-windows').Service;

// Create a new service object
var svc = new Service({
  name:'Hello World',
  description: 'The nodejs.org example web server.',
  script: 'C:\\path\\to\\helloworld.js'
});

// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
  svc.start();
});

svc.install();

पी.एस.

मुझे वह चीज़ इतनी उपयोगी लगी कि मैंने उसके चारों ओर आवरण ( npm , github ) का उपयोग करना और भी आसान बना दिया ।

इसे स्थापित करना:

npm install -g qckwinsvc

अपनी सेवा स्थापित करना:

> qckwinsvc
prompt: Service name: [name for your service]
prompt: Service description: [description for it]
prompt: Node script path: [path of your node script]
Service installed

अपनी सेवा को अनइंस्टॉल करना:

> qckwinsvc --uninstall
prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled

मुझे एक त्रुटि मिली, लेकिन इसके साथ काम कियाnpm install qckwinsvc -g
एडम गर्टेल

1
"qckwinsvc" कमाल है। पारितोषिक के लिए धन्यवाद।
एनएलवी

1
हम्म, मैं अपने ऐप को बिना प्रॉम्प्ट कैसे डिबग कर सकता हूं? मुझे पता है कि नोड-इंस्पेक्टर मदद कर सकता है, लेकिन सीएमडी के साथ डिबगिंग अधिक सहज लगती है।
adi518

2
मैंने एक नोड एक्सप्रेस ऐप को एक सेवा के रूप में स्थापित करने की कोशिश की, और यह चल रहा है (मुझे * .out.log फ़ाइल में कंसोल.लॉग कॉल से आउटपुट मिलता है), लेकिन जब मैं अपने वेब ब्राउज़र के माध्यम से सर्वर से प्रतिक्रिया प्राप्त करने की कोशिश करता हूं। , मैं अभी 404 वापस आ गया हूं।
sanderd17

1
Qwwinsvc के साथ मुझे संदेश मिले कि मेरी सेवा स्थापित हो गई है और शुरू हो गई है, लेकिन services.msc का उपयोग करके मैं उन्हें नहीं देखता। इसके अलावा मेरी सेवा स्टार्टअप पर लॉग करने के लिए लिखता है, लेकिन लॉग नहीं बनाया गया है।
गेरी

91

यदि आप लिनक्स का उपयोग कर रहे हैं, तो macOS या Windows pm2 आपका मित्र है। यह एक प्रक्रिया प्रबंधक है जो क्लस्टर को बहुत अच्छी तरह से संभालता है।

आप इसे स्थापित करें:

npm install -g pm2

उदाहरण के लिए, 3 प्रक्रियाओं का एक समूह शुरू करें:

 pm2 start app.js -i 3

और pm2 उन्हें बूट पर शुरू करता है:

 pm2 startup

इसमें एक एपीआई, एक मॉनिटर इंटरफ़ेस भी है :

बहुत बढ़िया

गिटहब पर जाएं और निर्देश पढ़ें । यह प्रयोग करने में आसान और बहुत आसान है। हमेशा के लिए सबसे अच्छी बात है


2
दुर्भाग्य से खिड़कियों पर 8
Bachalo

3
महोदय, यह उत्तर अधिक उत्थान के योग्य है। धन्यवाद। इसके अलावा मैं यह कहना चाहता हूं कि pm2 startupइस प्लेटफॉर्म के मापदंडों में से एक की जरूरत है: <ubuntu|centos|gentoo|systemd>यानी:
sospedra

3
@Deerloper पैरामीटर की जरूरत नहीं है। उनके आधिकारिक पेज से: $ pm2 startup # auto-detect platform $ pm2 startup [platform] # render startup-script for a specific platform, the [platform] could be one of: # ubuntu|centos|redhat|gentoo|systemd|darwin|amazon
vorg

1
यह आश्चर्यजनक है और शीर्ष उत्तर के साथ-साथ अधिक वोटों के हकदार हैं। इसके लिए धन्यवाद!
ILikeTurtles 19

1
@baptx यदि आप सिस्टम UX के साथ pm2 की मुख्य अपील के साथ ठीक हैं, तो यह है कि यह अधिक पोर्टेबल है: गैर-सिस्टम आधारित डिस्ट्रोस, मैकओएस और विंडोज।
दुरूम

32

अगर मैं गलत नहीं हूं, तो आप कमांड लाइन का उपयोग करके अपना आवेदन शुरू कर सकते हैं और इस प्रकार एक बैच फ़ाइल का उपयोग कर सकते हैं। उस स्थिति में इसे विंडोज लॉगिन से शुरू करना बहुत कठिन काम नहीं है।

आप निम्नलिखित सामग्री के साथ एक बैच फ़ाइल बनाएँ:

node C:\myapp.js

और इसे .bat extention के साथ सहेजें। यहाँ myapp.js आपका ऐप है, जो इस उदाहरण में C: ड्राइव में स्थित है (पथ को देखें)।

अब आप बस अपने स्टार्टअप फोल्डर में बैच फाइल को फेंक सकते हैं जो C: \ Users \% उपयोगकर्ता नाम% \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup पर स्थित है।

बस रनडेल बॉक्स में% appdata% का उपयोग करके इसे खोलें और> रोमिंग> माइक्रोसॉफ्ट> विंडोज> स्टार्ट मेनू> स्टार्ट> अप का पता लगाएं

बैच फ़ाइल को लॉगिन समय पर निष्पादित किया जाएगा और cmd से अपना नोड एप्लिकेशन शुरू करेगा।


2
यह काम करता है, लेकिन यह गरीब आदमी का तरीका है। नीचे से लम्बे उत्तर बेहतर है। इसे सेवा के रूप में स्थापित करें।
माइंडजुइस

7
@MindJuice मैं सहमत हूं, हालांकि यह सिर्फ एक आसान तरीका है इसलिए मुझे लगा कि यह ध्यान देने योग्य है।
चेतन भसीन

11
मेरे एप्लिकेशन को लिनक्स और विंडोज दोनों पर चलने की आवश्यकता है, इसलिए यह समाधान मेरे लिए बेहतर काम करता है क्योंकि इसके लिए मुझे अपने ऐप में विंडोज विशिष्ट पैकेज की आवश्यकता नहीं है। सिर्फ इसलिए कि एक समाधान सरल है यह एक बुरा नहीं बनाता है।
रयान हिगिंस

दरअसल, यह तभी काम करता है जब आप मशीन में लॉग इन करते हैं। लेकिन, स्केलिंग / CI उद्देश्यों (उत्पादन env) के लिए, यह काम नहीं करता है।
जोओ ब्रूनो अबू हेटम डी लिज़

4

यह आसानी से विंडोज टास्क शेड्यूलर के साथ मैन्युअल रूप से किया जा सकता है।

  • सबसे पहले, हमेशा के लिए स्थापित करें ।
  • फिर, एक बैच फ़ाइल बनाएं जिसमें निम्नलिखित शामिल हैं:

    cd C:\path\to\project\root
    call C:\Users\Username\AppData\Roaming\npm\forever.cmd start server.js
    exit 0
    
  • अंत में, जब आप लॉग ऑन करते हैं तो एक निर्धारित कार्य बनाएं। इस कार्य को बैच फ़ाइल को कॉल करना चाहिए।


3

मैं आपको Windows सेवा के रूप में अपना नोड.जेएस ऐप इंस्टॉल करने की सलाह दूंगा, और फिर स्टार्टअप पर चलाने के लिए सेवा सेट करूंगा। स्टार्टअप फ़ोल्डर में बैच फ़ाइलों को जोड़ने या हटाने के बजाय विंडोज सर्विसेज स्नैपइन का उपयोग करके स्टार्टअप कार्रवाई को नियंत्रित करना थोड़ा आसान बनाना चाहिए।

Stackoverflow में एक और सेवा-संबंधी प्रश्न ने (कुछ) वास्तव में अच्छे विकल्प प्रदान किए। की जाँच करें के रूप में एक Windows सेवा Node.js स्थापित करने के लिएनोड-विंडोज वास्तव में मुझे आशाजनक लगता है। एक तरफ के रूप में, मैंने जावा ऐप के लिए समान उपकरणों का उपयोग किया था जिन्हें सेवाओं के रूप में चलाने की आवश्यकता थी। इसने मेरे जीवन को पूरी तरह से आसान बना दिया है। उम्मीद है की यह मदद करेगा।



1

विंडोज़ पर अपनी नोडज प्रक्रियाओं को शुरू करने और चलाने के लिए pm2 का उपयोग करें ।

शाम 2 शुरू करने के लिए कार्य शेड्यूलर सेट करने के तरीके के बारे में इस गीथूब चर्चा को पढ़ना सुनिश्चित करें: https://github.com/Unitech/pm2/issues/1079



0

मुझे पता है कि ऊपर साझा किए गए समाधानों के अनुसार इसे प्राप्त करने के कई तरीके हैं। मैंने उन सभी की कोशिश नहीं की है, लेकिन कुछ तीसरे पक्ष की सेवाओं में स्पष्टता की कमी है कि सभी कार्य पृष्ठभूमि में चल रहे हैं। मैंने इसे एक पॉवरशेल स्क्रिप्ट के माध्यम से प्राप्त किया है, जिसका उल्लेख विंडोज़ बैच फ़ाइल के समान है। मैंने इसे हर मिनट चलाने के लिए विंडोज टास्क शेड्यूलर का उपयोग करके निर्धारित किया है। यह अब तक काफी कुशल और पारदर्शी रहा है। मेरा यहाँ लाभ यह है कि मैं इसे फिर से शुरू करने से पहले स्पष्ट रूप से प्रक्रिया की जाँच कर रहा हूँ। यह सर्वर पर CPU के लिए बहुत अधिक उपरिशायी नहीं होगा। इसके अलावा, आपको फ़ाइल को स्टार्टअप फ़ोल्डर में स्पष्ट रूप से रखने की आवश्यकता नहीं है।

function CheckNodeService ()
{

$node = Get-Process node -ErrorAction SilentlyContinue

if($node)
{
    echo 'Node Running'
}
else
{
    echo 'Node not Running'
    Start-Process "C:\Program Files\nodejs\node.exe" -ArgumentList "app.js" -WorkingDirectory "E:\MyApplication"
    echo 'Node started'

}
}

CheckNodeService

-2

इस उत्तर से सीधे कॉपी किया गया :

आप किसी भी भाषा में एक स्क्रिप्ट लिख सकते हैं जिसे आप इसे (यहां तक ​​कि नोडज का उपयोग करके) स्वचालित करना चाहते हैं और फिर उपयोगकर्ता की% appdata% \ Microsoft \ Windows \ Start Menu \ Programs \ Startup फ़ोल्डर में उस स्क्रिप्ट के लिए एक शॉर्टकट स्थापित करें


4
इस मामले में, यहां कॉपी / पेस्ट उत्तर के बजाय प्रश्न को एक डुप्लिकेट के रूप में चिह्नित करें।
ओलिवियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.