web-dev-qa-db-fra.com

Comment installer node.js en tant que service Windows?

J'ai téléchargé node.js exécutable. Comment puis-je exécuter ce fichier exécutable en tant que service Windows?.

108
TN.

Tard à la fête, mais node-windows fera aussi l'affaire.

enter image description here

Il a également une journalisation système intégrée.

enter image description here

Il existe une API pour créer des scripts à partir de code, c'est-à-dire.

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.

150
Corey

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

27

J'ai trouvé la chose tellement utile que j'ai construit 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
25
Hariram Nandagopal

De ce blog

Ensuite, je voulais héberger un nœud en tant que service, tout comme IIS. Par ici il démarre avec ma machine, s’exécute en arrière-plan, redémarre automatiquement s'il se bloque et ainsi de suite.

C’est là que nssm , le gestionnaire de services non aspirant, entre le. image. 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 noeud application en tant que service, ouvrez votre cmd en tant qu’administrateur et tapez commandes suivantes:

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

Je ne réponds pas directement à la question, mais vous propose une alternative qui pourrait également répondre à vos besoins de manière plus modeste.

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. Lancer automatiquement la logique au démarrage du système

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

Pour que PM démarre automatiquement, le moyen le plus simple consiste à créer une tâche planifiée avec un déclencheur "Au démarrage":

 enter image description here

10
KFL

L'approche process manager + planificateur de tâches que j'ai postée il y a un an fonctionne bien avec certaines installations de service ponctuelles. Mais récemment, j'ai commencé à concevoir un système à la manière d'un micro-service, de nombreux petits services communiquant entre eux via IPC. Donc, configurer manuellement chaque service est devenu insupportable. 

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

serman install <path_to_config_file>

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

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

<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>
0
KFL