Comment installer node.js en tant que service Windows?

J’ai téléchargé l’exécutable node.js. Comment puis-je exécuter cet exécutable en tant que service Windows? Je ne peux pas utiliser le programme d’installation standard node.js, car je dois exécuter plusieurs versions de node.js simultanément.

En retard à la fête, mais node-windows fera le tour aussi.

entrer la description de l'image ici

La journalisation du système est également intégrée.

entrer la description de l'image ici

Il y a une API pour créer des scripts à partir du code, c.-à-d.

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

FD: Je suis l’auteur de ce module.

WinSer est un wrapper convivial nommé node.js autour du NSSM (Non-Sucking Service Manager).

J’ai trouvé la chose tellement utile que j’ai créé un wrapper encore plus facile à utiliser ( npm , github ).

L’installer:

 npm install -g qckwinsvc 

Installer votre service:

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 

Désinstallation de votre service:

qckwinsvc –uninstall

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

De ce blog

Ensuite, je voulais héberger un nœud en tant que service, tout comme IIS. De cette façon, il démarrera avec ma machine, fonctionnera en arrière-plan, redémarrera automatiquement en cas de panne, etc.

C’est là qu’entre en jeu nssm , le gestionnaire de service non-suceur. Cet outil vous permet d’héberger un fichier .exe normal en tant que service Windows.

Voici les commandes que j’ai utilisées pour configurer une instance de votre application de noeud en tant que service, ouvrez votre administrateur de type cmd et tapez les commandes suivantes:

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

Je ne traite pas directement de la question, mais je propose une alternative qui pourrait également répondre à vos besoins de manière plus node.js.

Fonctionnellement, les exigences sont les suivantes:

  1. Avoir la logique (app) en cours d’exécution en arrière-plan
  2. Être capable de démarrer / arrêter la logique
  3. Démarrer automatiquement la logique au démarrage du système

Ces exigences peuvent être satisfaites en utilisant un gestionnaire de processus (PM) et en faisant démarrer le gestionnaire de processus au démarrage du système. Deux bons MP qui sont compatibles avec Windows sont:

  • PM2
  • pour toujours

Pour que le PM démarre automatiquement, le plus simple est de créer une tâche planifiée avec un déclencheur “Au démarrage”:

entrer la description de l'image ici

L’ approche du gestionnaire de processus + planificateur de tâches que j’ai publiée il y a un an fonctionne bien avec certaines installations de service ponctuelles. Mais récemment, j’ai commencé à concevoir des systèmes en mode micro-service, avec de nombreux petits services communiquant entre eux par IPC. La configuration manuelle de chaque service est donc devenue insupportable.

Dans le but d’installer des services sans configuration manuelle, j’ai créé serman , un outil de ligne de commande (installé avec npm i -g serman ) pour installer un exécutable en tant que service. Tout ce dont vous avez besoin pour écrire (et écrire seulement une fois) est un simple fichier de configuration de service avec votre exécutable. Courir

 serman install  

va installer le service. stdout et stderr sont tous connectés. Pour plus d’informations, consultez le site Web du projet .

Un fichier de configuration fonctionnel est très simple, comme illustré ci-dessous. Mais il possède également de nombreuses fonctionnalités utiles telles que et ci-dessous.

  hello hello This service runs the hello application node.exe  "{{dir}}\hello.js" rotate