2012-05-11 45 views

Odpowiedz

125

późno na imprezie, ale node-windows rade też.

enter image description here

Posiada również rejestrowanie System zbudowany w

enter image description here

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.

+1

Właśnie zacząłem używać tego i kocham to! :) – iboros

+1

niesamowite dzieło. –

+1

Świetna robota. Dziękuję Ci! – esnm

26

WinSer jest node.js obsłudze otoki wokół popularnego NSSM (Non-Sucking Service Manager)

+0

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. –

+0

@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. –

+0

@ JürgenSteinblock to jest dokładnie to, co powiedziałem: to hostowana aplikacja ssąca, a nie sam menedżer serwisowy –

9

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ą:

  1. Miej logiczny (APP) działa w tle
  2. Umieć start/stop logikę
  3. 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:

enter image description here

+0

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

+0

@steampowered, jak podać ścieżkę PM2_Home? –

13

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 
+2

to zdecydowanie najłatwiejszy sposób !! – JCH2k

+0

Dzięki JCH2k :) – Harry

+0

Nie działa dla mnie. OS Win 10 64bit. – quarky

0

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> 
11

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

nssm to świetne narzędzie! –

Powiązane problemy