Können mir Experten von node.js sagen, wie ich Node JS so konfigurieren kann, dass ein Server beim Start meines Computers automatisch gestartet wird? Ich bin unter Windows
Können mir Experten von node.js sagen, wie ich Node JS so konfigurieren kann, dass ein Server beim Start meines Computers automatisch gestartet wird? Ich bin unter Windows
Antworten:
Dies muss in node.js überhaupt nicht konfiguriert werden. Dies liegt ausschließlich in der Verantwortung des Betriebssystems (in Ihrem Fall Windows). Der zuverlässigste Weg, dies zu erreichen, ist ein Windows-Dienst.
Es gibt dieses supereinfache Modul, das ein Knotenskript als Windows-Dienst installiert. Es heißt Node-Windows ( npm , github , Dokumentation ). Ich habe vorher benutzt und wie ein Zauber gearbeitet.
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();
ps
Ich fand das Ding so nützlich, dass ich einen noch einfacher zu verwendenden Wrapper darum herum baute ( npm , github ).
Installation:
npm install -g qckwinsvc
Installieren Ihres Dienstes:
> 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
Deinstallation Ihres Dienstes:
> qckwinsvc --uninstall
prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled
npm install qckwinsvc -g
Wenn Sie Linux, MacOS oder Windows verwenden, ist pm2 Ihr Freund. Es ist ein Prozessmanager, der sehr gut mit Clustern umgeht.
Sie installieren es:
npm install -g pm2
Starten Sie einen Cluster mit beispielsweise 3 Prozessen:
pm2 start app.js -i 3
Und machen pm2 startet sie beim Booten:
pm2 startup
Es hat eine API, sogar eine Monitorschnittstelle :
Gehen Sie zu Github und lesen Sie die Anweisungen . Es ist einfach zu bedienen und sehr praktisch. Das Beste seit Ewigkeiten .
pm2 startup
einer dieser Plattformparameter benötigt wird <ubuntu|centos|gentoo|systemd>
:
$ pm2 startup # auto-detect platform
$ pm2 startup [platform] # render startup-script for a specific platform, the [platform] could be one of: # ubuntu|centos|redhat|gentoo|systemd|darwin|amazon
Wenn ich mich nicht irre, können Sie Ihre Anwendung über die Befehlszeile und damit auch über eine Batchdatei starten. In diesem Fall ist es keine sehr schwierige Aufgabe, es mit der Windows-Anmeldung zu starten.
Sie erstellen einfach eine Batchdatei mit folgendem Inhalt:
node C:\myapp.js
und speichern Sie es mit .bat-Erweiterung. Hier ist myapp.js Ihre App, die sich in diesem Beispiel in Laufwerk C: befindet (geben Sie den Pfad an).
Jetzt können Sie die Batchdatei einfach in Ihren Startordner werfen, der sich unter C: \ Benutzer \% Benutzername% \ AppData \ Roaming \ Microsoft \ Windows \ Startmenü \ Programme \ Start befindet
Öffnen Sie es einfach mit% appdata% im Feld run dailog und suchen Sie> Roaming> Microsoft> Windows> Startmenü> Programme> Start
Die Batchdatei wird zum Zeitpunkt der Anmeldung ausgeführt und startet Ihre Knotenanwendung von cmd.
Dies kann einfach manuell mit dem Windows Task Scheduler durchgeführt werden.
Erstellen Sie dann eine Batchdatei, die Folgendes enthält:
cd C:\path\to\project\root
call C:\Users\Username\AppData\Roaming\npm\forever.cmd start server.js
exit 0
Zuletzt erstellen Sie eine geplante Aufgabe, die beim Anmelden ausgeführt wird. Diese Aufgabe sollte die Batchdatei aufrufen.
Ich würde empfehlen, Ihre node.js-App als Windows-Dienst zu installieren und den Dienst dann so einzustellen, dass er beim Start ausgeführt wird. Dies sollte es etwas einfacher machen, die Startaktion mithilfe des Windows Services-Snapins zu steuern, anstatt Batchdateien im Startordner hinzufügen oder entfernen zu müssen.
Eine weitere servicebezogene Frage in Stackoverflow bot einige (anscheinend) wirklich gute Optionen. Lesen Sie, wie Sie node.js als Windows-Dienst installieren . Node-Windows sieht für mich sehr vielversprechend aus. Nebenbei habe ich ähnliche Tools für Java-Apps verwendet, die als Dienste ausgeführt werden mussten. Es hat mein Leben viel einfacher gemacht. Hoffe das hilft.
Verwenden Sie pm2 , um Ihre nodejs-Prozesse unter zu starten und auszuführen.
Lesen Sie unbedingt diese Github-Diskussion zum Einrichten des Task-Schedulers zum Starten von pm2: https://github.com/Unitech/pm2/issues/1079
Hier ist eine andere Lösung, die ich in C # geschrieben habe, um den nativen Knotenserver oder den pm2-Server unter Windows automatisch zu starten.
Ich weiß, dass es mehrere Möglichkeiten gibt, dies gemäß den oben genannten Lösungen zu erreichen. Ich habe nicht alle ausprobiert, aber einigen Diensten von Drittanbietern fehlt die Klarheit darüber, welche Aufgaben im Hintergrund ausgeführt werden. Ich habe dies durch ein Powershell-Skript erreicht, das dem als Windows-Batch-Datei genannten ähnelt. Ich habe es mit Windows Tasks Scheduler so geplant, dass es jede Minute ausgeführt wird. Dies war bisher sehr effizient und transparent. Der Vorteil, den ich hier habe, ist, dass ich den Prozess explizit überprüfe, bevor ich ihn erneut starte. Dies würde der CPU auf dem Server nicht viel Overhead verursachen. Außerdem müssen Sie die Datei nicht explizit in den Startordnern ablegen.
function CheckNodeService ()
{
$node = Get-Process node -ErrorAction SilentlyContinue
if($node)
{
echo 'Node Running'
}
else
{
echo 'Node not Running'
Start-Process "C:\Program Files\nodejs\node.exe" -ArgumentList "app.js" -WorkingDirectory "E:\MyApplication"
echo 'Node started'
}
}
CheckNodeService
Direkt aus dieser Antwort kopiert :
Sie können ein Skript in einer beliebigen Sprache schreiben, die Sie automatisieren möchten (auch mit nodejs), und dann einfach eine Verknüpfung zu diesem Skript im Ordner% appdata% \ Microsoft \ Windows \ Startmenü \ Programme \ Startup des Benutzers installieren