web-dev-qa-db-fra.com

node.js serveur http en tant que service Windows

J'ai créé un serveur http simple dans Node.js.

Je voulais le faire fonctionner en permanence sur mon ordinateur Windows 2008, afin que, si l'ordinateur redémarre, il redémarre automatiquement.

Alors j'en ai fait un service avec cette commande:

C:\Users\Administrator>sc create translate binPath= "node D:\Apps\translate\machine-learning-server\servertranslate.js" DisplayName= "Translation Server"

Puis commencé avec:

C:\Users\Administrator>sc start translate

et j'ai le message d'erreur suivant:

[SC] StartService FAILED 1053:

The service did not respond to the start or control request in a timely fashion.

Le programme fonctionne correctement lorsque je le lance à partir de la ligne de commande (pas en tant que service).

Quel est le moyen le plus simple d’avoir un serveur Web node.js qui redémarre automatiquement au redémarrage de l’ordinateur?

15
Erel Segal-Halevi

Auparavant, j'utilisais NSSM pour exécuter des applications Node.js en tant que services sous Windows. Cela fonctionne assez bien et peut être configuré pour redémarrer automatiquement votre application en cas de crash.

http://nssm.cc/usage

nssm install YourService "C:\Program Files\Node.js\node.exe" "C:\something\something.js"
17
Brad

Si je me souviens bien, l'environnement d'exécution de Service n'est pas identique à l'exécution de quelque chose sous la commande Shell. En particulier, les services sont tenus de répondre aux messages du système pour indiquer leur état d'exécution, comme vous l'avez vu :-)

Ce doit être un problème résolu, cependant ...

Bien sûr: https://npmjs.org/package/windows-service

service de fenêtres

Exécutez les programmes Node.JS en tant que services Windows natifs.

npm installer windows-service

6
Mark Bessey

Utilisez celui-ci, très simple https://github.com/coreybutler/node-windows

Créez deux fichiers js sur votre projet. Et courez comme

noeud votre_service.js noeud votre_service_service.js

Pour installer:

 /**
 * Created by sabbir on 08/18/2015.
 */
//ref: https://github.com/coreybutler/node-windows
var Service = require('node-windows').Service;

// Create a new service object
var svc = new Service({
  name:'nodeDemoApp',
  description: 'The nodejs.org example web server.',
  script: 'D:\\NodeJS\\demoWeb\\bin\\www'
});

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

svc.install();

Pour la désinstallation:

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

// Create a new service object
var svc = new Service({
  name:'nodeDemoApp',
  script: require('path').join(__dirname,'bin\\www')
});

// Listen for the "uninstall" event so we know when it's done.
svc.on('uninstall',function(){
  console.log('Uninstall complete.');
  console.log('The service exists: ',svc.exists);
});

// Uninstall the service.
svc.uninstall();
3
Sabbir

En un mot, je dirais que le service ne sait pas où trouver le noeud binaire. Vous avez probablement mis à jour la variable PATH de votre profil. Ma recommandation est de TOUJOURS coder en dur le chemin complet dans les scripts de service.

2
Michael Schiebel

Comme mentionné dans d'autres questions à ce sujet, j'aimerais partager ici (car il n'a pas encore été mentionné) un module node.js appelé WinSer qui englobe NSSM et son utilisation est très simple. Peut-être aidera-t-il quelqu'un un jour . 

:)

2
Nando Araujo

Vous pouvez essayer le paquet qckwinsvc . Tout d'abord l'installer globalement:

npm install -g qckwinsvc

Et puis du cmd:

qckwinsvc
Prompt: Service name: [...]
Prompt: Service description: [...]
Prompt: Node script path: [/path/to/.js file]

Pour désinstaller:

qckwinsvc --uninstall

0
MrfksIV