node.js - tutorial - npm install
¿Cómo ejecutar la aplicación node.js para siempre cuando la consola está cerrada? (9)
Definitivamente recomendaría pm2
npm install -g pm2
Para iniciar el servidor: pm2 start [yourServerFile.js]
Para detener el servidor: pm2 stop [yourServerFile.js]
Cerrar cliente y servidor se ejecutará para siempre ... también se reiniciará si la aplicación falla.
He estado ejecutando un servidor de nodos en Ubuntu durante meses sin problemas
Me conecto a mi servidor remoto a través de ssh. Luego, inicio mi aplicación node.js con Forever . Todo funciona bien hasta que cierro la ventana de mi consola. ¿Cómo ejecutar la aplicación node.js FOREVER en mi servidor remoto incluso cuando cierro mi conexión a través de ssh? Solo quiero iniciar una aplicación y cerrar mi copmputer. Mi aplicación debería funcionar en segundo plano en mi servidor remoto.
Dos respuestas: una para Windows, una para * nix:
En Windows, puede usar el comando de inicio para iniciar el proceso desconectado de su instancia de cmd.exe
:
start node example.js
En * nix, hay dos aspectos de esto: desconectar el proceso de la consola y asegurarse de que no recibe la señal HUP
("colgar"), a lo que la mayoría de los procesos (incluido el nodo) responderán al finalizar. El primero es posiblemente opcional, pero el último es necesario.
Comenzar desconectado de la consola es fácil: por lo general, simplemente coloca un signo &
( &
) al final de la línea de comando:
# Keep reading, don''t just grab this and use it
node example.js &
Pero lo anterior no protege el proceso de las señales HUP
. El programa puede o no recibir HUP
cuando cierra el shell (consola), dependiendo de una opción de shell llamada huponexit
. Si huponexit
es true
, el proceso recibirá HUP
cuando el shell salga y presumiblemente terminará.
huponexit
es false
huponexit
predeterminada en las diversas variantes de Linux que he usado, y de hecho utilicé lo anterior durante años hasta que coderjoe y otros me ayudaron a comprender (en un flujo de comentarios muy largo en la respuesta que puede haberse eliminado desde entonces) que confiaba en que huponexit
era false
.
Para evitar la posibilidad de que huponexit
sea true
en su entorno, explícitamente use nohup
. nohup
ejecuta el proceso inmune a las señales HUP
. Lo usas así:
nohup node example.js > /dev/null &
o
nohup node example.js > your-desired-filename-or-stream-here &
La redirección es importante; si no lo haces, terminarás con un archivo nohup.out
que contiene el resultado de stdout
y stderr
. (Por defecto, nohup
redirecciona stderr
a stdout
, y si stdout
está enviando a un terminal, lo redirecciona a nohup.out
. nohup.out
también redirige stdin
si está recibiendo desde un terminal, por lo que no tenemos que hacer eso. man nohup
o info coreutils ''nohup invocation''
para más detalles).
En general, para estas cosas, quiere usar un monitor de proceso para que, si el proceso falla por algún motivo, el monitor lo reinicie, pero lo anterior funciona para casos simples.
En Linux, SSH en tu servidor remoto y ejecuta
screen
para lanzar a una nueva pantalla.
Finalmente, escriba ctrl a d para separar la sesión de pantalla sin matar el proceso.
Más información here .
Esta es solo una respuesta parcial para Windows . app.vbs
una sola línea de Visual Basic Script llamada app.vbs
que iniciará su aplicación de nodo dentro de una ventana oculta:
CreateObject("Wscript.Shell").Run "node app.js", 0
Para ejecutarlo automáticamente al inicio, abra el directorio %AppData%/Microsoft/Windows/Start Menu/Programs/Startup/
y agregue un acceso directo al archivo app.vbs
.
Más información en: https://keestalkstech.com/2016/07/start-nodejs-app-windowless-windows/
Si está ejecutando node.js en un entorno de producción, debería considerar usar PM2, forever.js o Nodemon.
No hay escasez de artículos en línea que comparen los diferentes paquetes.
Siempre, simple es lo mejor, no hay necesidad de advenedizo, no hay necesidad para siempre, simplemente nohup:
nohup node file.js &
Créanme, me estoy ejecutando así que para mi caso!
También es posible que desee considerar el uso de la utilidad advenedizo. Le permitirá iniciar, detener y reiniciar su aplicación de nodo como un servicio. Upstart puede configurarse para reiniciar automáticamente su aplicación si falla.
Instalar advenedizo:
sudo apt-get install upstart
Cree un script simple para su aplicación que se verá algo así como:
#!upstart
description "my app"
start on started mountall
stop on shutdown
# Automatically Respawn:
respawn
respawn limit 99 5
env NODE_ENV=production
exec node /somepath/myapp/app.js >> /var/log/myapp.log 2>&1
Luego, copie el archivo de script (myapp.conf) en / etc / init y asegúrese de que esté marcado como ejecutable. Su aplicación puede ser administrada utilizando los siguientes comandos:
sudo start myapp
sudo stop myapp
sudo restart myapp
Tuve un problema similar y creo que usarlo para siempre ayudará a manejar el bloqueo y reinicia
Puedes instalarlo para siempre en todo el mundo: sudo nom install -g forever
Y ejecuta este comando:
nohup forever server.js &
Esto debería manejar todo el problema de cerrar la terminal, cerrar sesión ssh, bloqueo de nodo y reinicio.
node expamle.js &
por ejemplo