कैसे खिड़कियों सेवा के रूप में Node.js स्थापित करने के लिए?


130

मैंने नोड.जेएस निष्पादन योग्य डाउनलोड किया है । मैं उस निष्पादन योग्य को विंडोज़ सेवा के रूप में कैसे चला सकता हूं? मैं मानक नोड.जेएस इंस्टॉलर का उपयोग नहीं कर सकता, क्योंकि मुझे समवर्ती रूप से नोड के कई संस्करण चलाने की आवश्यकता है।

जवाबों:


187

पार्टी के लिए देर हो चुकी है, लेकिन नोड खिड़कियों चाल भी करेंगे।

यहाँ छवि विवरण दर्ज करें

यह भी प्रणाली में प्रवेश किया है।

यहाँ छवि विवरण दर्ज करें

कोड से स्क्रिप्ट बनाने के लिए एक एपीआई है, अर्थात

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();

एफडी: मैं इस मॉड्यूल का लेखक हूं।


3
दूसरा वह "कमाल"। मैंने सिर्फ आपके रीडमी निर्देशों का पालन किया और यह सीधे बॉक्स से बाहर काम किया - बहुत दुर्लभ! सिर्फ एक चीज जिसे आप रीडमी में जोड़ना चाहते हैं: CLI पर बनाई गई js स्क्रिप्ट को कैसे चलाएं:>> नोड set_up_win_service.js ...
mike rodent

किसी भी तरह से @Corey मैं चला सकते हैं JXCore इस मॉड्यूल का उपयोग कर एक सेवा के रूप पैकेज?
मधुर

@ माधुर - सैद्धांतिक रूप से, यह काम कर सकता है, लेकिन मैंने इसे परखने की योजना नहीं बनाई है। नोड-विंडोज़ एक रैपर.जेएस फ़ाइल का उपयोग करता है जो निगरानी / पुनरारंभ के लिए जिम्मेदार है। यह सिर्फ नोड स्क्रिप्ट को एक बच्चे की प्रक्रिया के रूप में लॉन्च करता है। निष्पादन योग्य पथ (नोड के बजाय jx) को कॉन्फ़िगर करना भी संभव है। तो, सैद्धांतिक रूप से, आप शायद ऐसा कर सकता है, लेकिन मुझे नहीं पता कि क्या quirks की तरह आप संभावित करना पड़ सकता है है।
कोरी

@ मेरे पास एक सरल Http Node ऐप है, लेकिन यह इस सेवा का उपयोग करते हुए नहीं रह सकता है। यह स्थापित करता है और ठीक शुरू होता है, लेकिन यह तुरंत चालू हो जाता है। किसी भी मदद की बहुत सराहना की सर होता! इवेंट व्यूअर कोई त्रुटि नहीं दिखाता है, लेकिन चेतावनी: चाइल्ड प्रोसेस [50732 - C: \ Program Files \ नोडज \ नोड। Exharmharmony "C: \ Users \ bmechkov \ AppData \ रोमिंग \ npm \ नोड \ नोड_ नोड्स \ नोड-विंडोज \ lib \ wrapper.js "-f" C: \ देव \ नोड \ abs_tips \ server.js "-l" नोड एबीएस टिप्स "जी 0.25 डब्ल्यू 1 -r 3 -एक] के साथ 0 समाप्त
Mechkov

@ मिचकोव - 0 के साथ समाप्त होने का मतलब एक सफल निकास है। क्या आप नोड-विंडो के बिना स्क्रिप्ट को सफलतापूर्वक चला सकते हैं?
कोरी

40

मुझे वह चीज़ इतनी उपयोगी लगी कि मैंने उसके चारों ओर आवरण ( 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

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

qwwinsvc --uninstall

prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled

धन्यवाद, बहुत आसान है !! quarky, यह मेरे लिए काम करता है (जीत 10 64 बिट)
फ़ुरकन

“Npm ईआरआर! asyncWrite एक फ़ंक्शन नहीं है "" npm ERR! pna.nextTick कार्य नहीं है "
Timwi

धन्यवाद, यह उपयोग करने के लिए बहुत आसान है।
एनरिक फ्लोर्स

27

WinSer एक लोकप्रिय NSSM (नॉन-सकिंग सर्विस मैनेजर) के आसपास नोड फ्रेंडली रैपर है।


एनएसएसएम पसंद नहीं है क्योंकि यह मानता है कि यह गैर-चूसने वाला है क्योंकि यह होस्ट किए गए एप्लिकेशन क्रैश को संभालता है, इसलिए वास्तव में यह होस्टेड एप्लिकेशन चूसने वाला है। सामान्य रूप में की तरह नहीं माइक्रोसॉफ्ट पर आरोप लगा सिर्फ इसलिए कि यह माइक्रोसॉफ्ट है मत करो।
फेलिस पोलानो

2
@FelicePollano NSSM मानती है कि यह नॉन-सकिंग है क्योंकि यह होस्ट किए गए एप्लिकेशन की निगरानी करता है, जैसे कि अन्य समाधानों के विपरीत, जो कि चालू अवस्था में सेवा छोड़ देते हैं, भले ही लिपटे प्रक्रिया मर जाती है।
जर्गेन स्टीनब्लॉक

@ JürgenSteinblock यह वही है जो मैंने कहा था: होस्ट किया गया अनुप्रयोग चूसने वाला है, न कि सेवा प्रबंधक स्वयं
फेलिस पोलानो

2
@FelicePollano एक होस्ट किए गए एप्लिकेशन से बाहर निकलने का मतलब यह नहीं है कि कुछ बुरा है। मुद्दा यह है: एनएसएसएम प्रतिबिंबित करता है (या ठीक से कॉन्फ़िगर किया जा सकता है) को प्रतिबिंबित कर सकता है, तो सेवा को केवल अन्य सेवा प्रबंधकों की तरह चल रहे राज्य संभालने के बजाय मॉनिटर किया जा सकता है (एक उपयोगकर्ता के रूप में मैं होस्ट की गई प्रक्रिया को मारता हूं और श्रवण अभी भी दिखाऊंगा सेवा चालू अवस्था में)।
जर्गेन स्टीनब्लॉक

16

इस ब्लॉग से

अगला, मैं IIS की तरह, नोड को एक सेवा के रूप में होस्ट करना चाहता था। इस तरह यह मेरी मशीन के साथ शुरू होता है, पृष्ठभूमि में चलता है, यदि यह दुर्घटनाग्रस्त हो जाता है और आगे बढ़ता है तो स्वचालित रूप से पुनः आरंभ होता है।

यह वह जगह है जहाँ गैर-चूसने वाला , गैर-चूसने वाला सेवा प्रबंधक, चित्र में प्रवेश करता है। यह उपकरण आपको Windows सेवा के रूप में एक सामान्य .exe होस्ट करने देता है।

यहां वे कमांड हैं जिनका उपयोग मैंने एक सेवा के रूप में आपके नोड एप्लिकेशन के इंस्टेंस को सेट करने के लिए किया था, अपने cmd को एडमिनिस्ट्रेटर की तरह खोलें और निम्न कमांड टाइप करें:

nssm.exe install service_name c:\your_nodejs_directory\node.exe c:\your_application_directory\server.js
net start service_name

14

मैं सीधे प्रश्न को संबोधित नहीं कर रहा हूं, लेकिन एक ऐसा विकल्प प्रदान करता हूं जो आपकी आवश्यकता को अधिक नोड में भी पूरा कर सकता है। जेएस फैशन तरीका।

आमतौर पर आवश्यकताएं हैं:

  1. पृष्ठभूमि में तर्क (ऐप) चलाएं
  2. तर्क को शुरू / बंद करने में सक्षम हो
  3. सिस्टम बूट होने पर तर्क को स्वचालित रूप से शुरू करें

प्रक्रिया प्रबंधक (PM) का उपयोग करके और सिस्टम स्टार्टअप पर प्रक्रिया प्रबंधक प्रारंभ करके इन आवश्यकताओं को पूरा किया जा सकता है। विंडोज के अनुकूल दो अच्छे पीएम हैं:

पीएम को स्वचालित रूप से शुरू करने के लिए, "स्टार्टअप" ट्रिगर के साथ एक अनुसूचित कार्य बनाने के लिए सबसे सरल तरीका है:

यहाँ छवि विवरण दर्ज करें


यदि आप pm2स्टार्टअप पर बैच स्क्रिप्ट का उपयोग शुरू करने का प्रयास करते हैं, तो पर्यावरण चर को शामिल करना सुनिश्चित करें या यह काम नहीं करेगा। यहाँ चर्चा की गई: github.com/Unitech/pm2/issues/1079
स्टीमपॉवर

@steampowered कैसे दें PM2_Home पाथ?
चरण तेज

0

प्रक्रिया प्रबंधक + कार्य अनुसूचक दृष्टिकोण मैं तैनात एक साल पहले कुछ एक बंद सेवा प्रतिष्ठानों के साथ अच्छी तरह से काम करता है। लेकिन हाल ही में मैंने माइक्रो-सर्विस फैशन में प्रणाली को डिजाइन करना शुरू किया, जिसमें कई छोटी-छोटी सेवाएं आईपीसी के माध्यम से एक-दूसरे से बात कर रही थीं। इसलिए प्रत्येक सेवा को मैन्युअल रूप से कॉन्फ़िगर करना असहनीय हो गया है।

मैनुअल कॉन्फ़िगरेशन के बिना सेवाओं को स्थापित करने के लक्ष्य की ओर, मैंने सेवा के रूप में एक निष्पादन योग्य स्थापित करने के लिए सरमन , एक कमांड लाइन टूल (स्थापित करें npm i -g serman) बनाया। आपको केवल लिखने की आवश्यकता है (और केवल एक बार लिखना) आपके निष्पादन योग्य के साथ-साथ एक सरल सेवा कॉन्फ़िगरेशन फ़ाइल है। Daud

serman install <path_to_config_file>

सेवा स्थापित करेगा। stdoutऔर stderrसभी लॉग इन हैं। अधिक जानकारी के लिए, परियोजना की वेबसाइट देखें

एक कामकाजी विन्यास फ़ाइल बहुत सरल है, जैसा कि नीचे दिखाया गया है। लेकिन इसमें कई उपयोगी विशेषताएं भी हैं जैसे कि <env>और <persistent_env>नीचे।

<service>
  <id>hello</id>
  <name>hello</name>
  <description>This service runs the hello application</description>

  <executable>node.exe</executable>

  <!-- 
       {{dir}} will be expanded to the containing directory of your 
       config file, which is normally where your executable locates 
   -->
  <arguments>"{{dir}}\hello.js"</arguments>

  <logmode>rotate</logmode>

  <!-- OPTIONAL FEATURE:
       NODE_ENV=production will be an environment variable 
       available to your application, but not visible outside 
       of your application
   -->
  <env name="NODE_ENV" value="production"/>

  <!-- OPTIONAL FEATURE:
       FOO_SERVICE_PORT=8989 will be persisted as an environment
       variable machine-wide.
   -->
  <persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.