जवाबों:
पार्टी के लिए देर हो चुकी है, लेकिन नोड खिड़कियों चाल भी करेंगे।
यह भी प्रणाली में प्रवेश किया है।
कोड से स्क्रिप्ट बनाने के लिए एक एपीआई है, अर्थात
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
अपनी सेवा को अनइंस्टॉल करना:
qwwinsvc --uninstall
prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled
WinSer एक लोकप्रिय NSSM (नॉन-सकिंग सर्विस मैनेजर) के आसपास नोड फ्रेंडली रैपर है।
अगला, मैं 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
मैं सीधे प्रश्न को संबोधित नहीं कर रहा हूं, लेकिन एक ऐसा विकल्प प्रदान करता हूं जो आपकी आवश्यकता को अधिक नोड में भी पूरा कर सकता है। जेएस फैशन तरीका।
आमतौर पर आवश्यकताएं हैं:
प्रक्रिया प्रबंधक (PM) का उपयोग करके और सिस्टम स्टार्टअप पर प्रक्रिया प्रबंधक प्रारंभ करके इन आवश्यकताओं को पूरा किया जा सकता है। विंडोज के अनुकूल दो अच्छे पीएम हैं:
पीएम को स्वचालित रूप से शुरू करने के लिए, "स्टार्टअप" ट्रिगर के साथ एक अनुसूचित कार्य बनाने के लिए सबसे सरल तरीका है:
pm2
स्टार्टअप पर बैच स्क्रिप्ट का उपयोग शुरू करने का प्रयास करते हैं, तो पर्यावरण चर को शामिल करना सुनिश्चित करें या यह काम नहीं करेगा। यहाँ चर्चा की गई: github.com/Unitech/pm2/issues/1079
प्रक्रिया प्रबंधक + कार्य अनुसूचक दृष्टिकोण मैं तैनात एक साल पहले कुछ एक बंद सेवा प्रतिष्ठानों के साथ अच्छी तरह से काम करता है। लेकिन हाल ही में मैंने माइक्रो-सर्विस फैशन में प्रणाली को डिजाइन करना शुरू किया, जिसमें कई छोटी-छोटी सेवाएं आईपीसी के माध्यम से एक-दूसरे से बात कर रही थीं। इसलिए प्रत्येक सेवा को मैन्युअल रूप से कॉन्फ़िगर करना असहनीय हो गया है।
मैनुअल कॉन्फ़िगरेशन के बिना सेवाओं को स्थापित करने के लक्ष्य की ओर, मैंने सेवा के रूप में एक निष्पादन योग्य स्थापित करने के लिए सरमन , एक कमांड लाइन टूल (स्थापित करें 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>