Comment faire pour installer nœud.js comme service windows?

j'ai téléchargé node.js exécutable. Comment puis-je exécuter cet exécutable en tant que service windows? Je ne peux pas utiliser la norme nœud.js installer, puisque je dois exécuter plusieurs versions de noeud.js concurremment.

103
demandé sur TN. 2012-05-11 12:28:36

6 réponses

en retard à la fête, mais noeud-windows fera l'affaire aussi.

enter image description here

il a également l'enregistrement de système intégré.

enter image description here

il y a une API pour créer des scripts à partir du code, i.e.

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.

142
répondu Corey 2015-06-25 22:02:54

WinSer est un noeud.js amical wrapper autour de la populaire NSSM (Non-Sucer Service Manager)

26
répondu Predrag Stojadinović 2012-08-01 12:35:26

j'ai trouvé la chose tellement utile que j'ai construit un enveloppeur encore plus facile à utiliser ( npm , github ).

installation:

npm install -g qckwinsvc

installation de 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ésinstaller votre service:

qckwinsvc --uninstall

prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled
23
répondu Hariram Nandagopal 2017-12-26 15:23:38

de ce blog

ensuite, je voulais héberger node comme un service, tout comme IIS. De cette façon il démarre avec ma machine, tourne en arrière-plan, redémarre automatiquement si elle s'écrase et ainsi de suite.

C'est ici que nssm , le gestionnaire de service non-sucking, entre image. Cet outil vous permet d'héberger une normale .exe 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 comme 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
13
répondu Michael Horojanski 2018-05-04 13:36:28

Je n'aborde pas la question directement, mais en fournissant une alternative qui pourrait également répondre à votre exigence dans un noeud plus.js façon.

du point de vue fonctionnel, les prescriptions sont les suivantes:

  1. la logique (app) en cours d'exécution en arrière-plan
  2. pouvoir démarrer/arrêter la logique
  3. démarrer Automatiquement la logique lorsque le système démarre

ces exigences peut être satisfait en utilisant un gestionnaire de processus (PM) et faire démarrer le gestionnaire de processus au démarrage du système. Deux bonnes règles qui sont Windows-friendly sont:

pour faire démarrer le PM automatiquement, le moyen le plus simple est de créer une tâche programmée avec un déclencheur "au démarrage":

enter image description here

10
répondu KFL 2015-10-29 20:48:28

Le gestionnaire de processus + planificateur de tâches approche que j'ai posté il y a un an fonctionne bien avec certains de service des installations. Mais récemment, j'ai commencé à concevoir le système de façon micro-service, avec de nombreux petits services se parlant les uns aux autres via IPC. La configuration manuelle de chaque service est donc devenue insupportable.

vers l'objectif d'installer des services sans configuration manuelle, j'ai créé serman , une commande outil de ligne de l'installer 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. Run

serman install <path_to_config_file>

installera le service. stdout et stderr sont toutes enregistrées. Pour plus d'informations, consultez le site du projet .

un fichier de configuration de travail est très simple, comme démontré ci-dessous. Mais il a également a de nombreuses caractéristiques 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
répondu KFL 2017-05-23 12:18:27