Pobrałem plik wykonywalny node.js. Jak mogę uruchomić ten plik wykonywalny jako usługę Windows? Nie mogę użyć standardowego instalatora node.js, ponieważ muszę równolegle uruchamiać wiele wersji pliku node.js.Jak zainstalować plik node.js jako usługę Windows?
Odpowiedz
późno na imprezie, ale node-windows rade też.
Posiada również rejestrowanie System zbudowany w
Istnieje API do tworzenia skryptów z kodu, tj
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. Jestem autor tego modułu.
WinSer jest node.js obsłudze otoki wokół popularnego NSSM (Non-Sucking Service Manager)
nie lubią NSSM ponieważ zakłada, że nie jest -Suckowanie, ponieważ obsługuje hostowaną awarię aplikacji, więc w rzeczywistości jest to hostowana aplikacja ssąca. Nie lubię w ogóle obwiniać Microsoft, tylko dlatego, że jest Microsoft. –
@FelicePollano NSSM zakłada, że nie jest Ssące, ponieważ monitoruje hostowaną aplikację, w przeciwieństwie do innych rozwiązań, takich jak srvany, które pozostawiają usługę w stanie uruchomionym, nawet jeśli zawijany proces zginie. –
@ JürgenSteinblock to jest dokładnie to, co powiedziałem: to hostowana aplikacja ssąca, a nie sam menedżer serwisowy –
Nie odpowiadam bezpośrednio na to pytanie, ale zapewniam alternatywę, która może również spełnić Twoje wymagania w bardziej modowy sposób w węźle node.js.
Funkcjonalnie wymagania są:
- Miej logiczny (APP) działa w tle
- Umieć start/stop logikę
- automatycznie uruchomi logikę, kiedy uruchamia się systemowe
Te wymagania można spełnić, korzystając z menedżera procesów (PM) i uruchamiając menedżera procesów podczas uruchamiania systemu. Dwa dobre PMs że to Windows przyjazne są:
Aby PM rozpocznie się automatycznie, najprostszym sposobem jest utworzenie zaplanowanego zadania z „przy starcie” wyzwalania:
Jeśli spróbujesz uruchomić 'pm2' przy użyciu skryptu wsadowego przy starcie, pamiętaj, aby uwzględnić zmienne środowiskowe lub nie będzie działać. Omówiono tutaj: https://github.com/Unitech/pm2/issues/1079 – steampowered
@steampowered, jak podać ścieżkę PM2_Home? –
znalazłem coś tak przydatny, że zbudował jeszcze łatwiejszy w użyciu opakowanie arou i to (npm, github).
instalowanie go:
npm install -g qckwinsvc
Instalowanie usługi:
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
Odinstalowanie usługę:
qckwinsvc --uninstall
prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled
process manager + task scheduler approach napisałem rok temu dobrze współpracuje z niektórych instalacji jednorazowych usług. Ale ostatnio zacząłem projektować system w sposób mikro-usługowy, a wiele małych usług rozmawiało ze sobą za pośrednictwem IPC. Więc ręczne konfigurowanie każdej usługi stało się nie do zniesienia.
W celu instalacji usług bez ręcznej konfiguracji utworzyłem serman, narzędzie wiersza poleceń (instalacja z npm i -g serman
), aby zainstalować plik wykonywalny jako usługę. Wszystko, co musisz napisać (i pisać tylko raz) to prosty plik konfiguracji usługi wraz z plikiem wykonywalnym. Uruchamianie usługi
serman install <path_to_config_file>
spowoduje zainstalowanie usługi. stdout
i stderr
są wszystkie zarejestrowane. Aby uzyskać więcej informacji, spójrz na project website.
Działający plik konfiguracyjny jest bardzo prosty, jak pokazano poniżej. Ale ma również wiele przydatnych funkcji, takich jak <env>
i poniżej.
<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>
uruchomiony jako usługa
Następna w kolejce, chciałem zorganizować węzeł jako usługa, podobnie jak IIS. W ten sposób uruchomi się z moim komputerem, uruchomi się w tle, automatycznie uruchomi się ponownie, jeśli ulegnie awarii i tak dalej.
To tutaj nssm, niezsychający menedżer serwisowy, wchodzi w obraz. To narzędzie umożliwia hostowanie normalnego pliku .exe jako usługi systemu Windows.
Oto polecenia I używany do ustawiania instancję aplikacji węzła jako usługa, otwórz cmd jak administrator i wpisz następujące polecenia:
nssm.exe install service_name c:\your_nodejs_directory\node.exe c:\your_application_directory\server.js
net start service_name
nssm to świetne narzędzie! –
Właśnie zacząłem używać tego i kocham to! :) – iboros
niesamowite dzieło. –
Świetna robota. Dziękuję Ci! – esnm