Avvia automaticamente il server node.js all’avvio

Gli esperti di node.js possono dirmi come configurare il nodo JS per l’avvio automatico di un server all’avvio della macchina? Sono su Windows

Questo non è qualcosa da configurare in node.js, questa è puramente responsabilità del sistema operativo (Windows nel tuo caso). Il modo più affidabile per ottenere questo è attraverso un servizio di Windows.

C’è questo modulo super facile che installa uno script nodo come servizio Windows, si chiama node-windows ( npm , github , documentazione ). Ho usato prima e ha funzionato come un fascino.

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

Ho trovato la cosa così utile che ho creato un wrapper ancora più semplice da utilizzare ( npm , github ).

Installandolo:

 npm install -g qckwinsvc 

Installare il tuo servizio:

 > 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 

Disinstallare il tuo servizio:

 > qckwinsvc --uninstall prompt: Service name: [name of your service] prompt: Node script path: [path of your node script] Service stopped Service uninstalled 

Se stai usando Linux * pm2 è tuo amico. È un gestore di processi che gestisce molto bene i cluster.

Lo installate:

 npm install -g pm2 

Avvia un cluster di, ad esempio, 3 processi:

  pm2 start app.js -i 3 

E fai in modo che pm2 li avvii all’avvio:

  pm2 startup 

Ha un’API, persino un’interfaccia http :

ECCEZIONALE

Vai a github e leggi le istruzioni . È facile da usare e molto utile. La cosa migliore da sempre .

* Gli sviluppatori l’hanno provato in Ubuntu e CentOs ma ho già usato Debian senza problemi. Puoi verificare se è valido per te con questo:

 git clone https://github.com/Unitech/pm2.git cd pm2 npm install # Or do NODE_ENV=development npm install if some packages are missing npm test 

Se non sbaglio, puoi avviare l’applicazione utilizzando la riga di comando e quindi anche utilizzando un file batch. In questo caso non è un compito molto difficile avviarlo con il login di Windows.

Devi solo creare un file batch con il seguente contenuto:

 node C:\myapp.js 

e salvalo con estensione .bat. Qui myapp.js è la tua app, che in questo esempio si trova in C: drive (spcify the path).

Ora puoi solo lanciare il file batch nella cartella di avvio che si trova in C: \ Users \% username% \ AppData \ Roaming \ Microsoft \ Windows \ Menu Avvio \ Programmi \ Esecuzione automatica

Basta aprirlo usando% appdata% nella cartella run dailog e individuare> Roaming> Microsoft> Windows> Menu Start> Programmi> Avvio

Il file batch verrà eseguito al momento dell’accesso e avvierà l’applicazione del nodo da cmd.

dovresti provare questo

npm per sempre

https://www.npmjs.com/package/forever

Consiglierei di installare l’app node.js come servizio di Windows e quindi di eseguire il servizio all’avvio. Ciò dovrebbe rendere un po ‘più facile controllare l’azione di avvio utilizzando lo snap-in di Windows Services piuttosto che dover aggiungere o rimuovere i file batch nella cartella Esecuzione automatica.

Un’altra domanda correlata al servizio in Stackoverflow ha fornito un paio di opzioni (apprently) davvero buone. Scopri Come installare node.js come servizio di Windows . node-windows sembra davvero promettente per me. Per inciso, ho usato strumenti simili per le app Java che dovevano essere eseguite come servizi. Mi ha reso la vita molto più facile. Spero che questo ti aiuti.

Non hai bisogno di nulla oltre all’utilità di pianificazione di Windows. Basta creare un’attività pianificata all’avvio ed eseguirla sia che l’utente specificato sia connesso o meno. Questa attività dovrebbe chiamare un file batch che contiene:

 cd C:\project\root call C:\Users\[COMPUTER_NAME]\AppData\Roaming\npm\forever.cmd start server.js exit 0 

Ecco un’altra soluzione che ho scritto in C # per l’avvio automatico del server nodo nativo o del server pm2 su Windows.

Usa pm2 per avviare ed eseguire i tuoi processi nodejs su Windows.

Assicurati di leggere questa discussione github su come impostare l’utilità di pianificazione per avviare pm2: https://github.com/Unitech/pm2/issues/1079

So che ci sono diversi modi per ottenere questo come da soluzioni condivise sopra. Non ho provato tutti loro, ma alcuni servizi di terze parti mancano di chiarezza su quali sono tutte le attività in esecuzione in background. Ho raggiunto questo attraverso uno script PowerShell simile a quello menzionato come file batch di Windows. L’ho programmato utilizzando l’Utilità di pianificazione di Windows per l’esecuzione ogni minuto. Questo è stato abbastanza efficiente e trasparente finora. Il vantaggio che ho qui è che sto controllando il processo in modo esplicito prima di ricominciare. Ciò non causerebbe molto sovraccarico alla CPU sul server. Inoltre, non è necessario posizionare esplicitamente il file nelle cartelle di avvio.

 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 

Copiato direttamente da questa risposta :

È ansible scrivere uno script in qualsiasi lingua che si desidera automatizzare (anche utilizzando nodejs) e quindi installare un collegamento a tale script nella cartella% Start% \% \ Microsoft \ Windows \ Start Menu \ Programmi \ Startup dell’utente.