En retard à la fête, mais les fenêtres de nœuds feront également l'affaire.
Il intègre également la journalisation du système.
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.
J'ai trouvé la chose si utile que j'ai construit un wrapper encore plus facile à utiliser ( npm , github ).
L'installer:
Installation de votre service:
Désinstaller votre service:
la source
WinSer est un wrapper convivial node.js autour du populaire NSSM (Non-Sucking Service Manager)
la source
De ce blog
la source
Je ne réponds pas directement à la question, mais je propose une alternative qui pourrait également répondre à vos besoins d'une manière plus node.js.
Fonctionnellement, les exigences sont:
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 PM compatibles avec Windows sont:
Pour que le PM démarre automatiquement, le moyen le plus simple est de créer une tâche planifiée avec un déclencheur «Au démarrage»:
la source
pm2
utiliser un script batch au démarrage, assurez-vous d'inclure les variables d'environnement sinon cela ne fonctionnera pas. Discuté ici: github.com/Unitech/pm2/issues/1079L' approche 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 un système sous la forme d'un micro-service, avec de nombreux petits services qui se parlent via IPC. Donc, configurer manuellement chaque service est devenu insupportable.
Dans le but d'installer des services sans configuration manuelle, j'ai créé serman , un outil en ligne de commande (installer avec
npm i -g serman
) pour installer un exécutable en tant que service. Tout ce dont vous avez besoin pour écrire (et n'écrire qu'une seule fois) est un simple fichier de configuration de service avec votre exécutable. Couririnstallera le service.
stdout
etstderr
sont tous enregistré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
<env>
et<persistent_env>
ci - dessous.la source