Saltar al contenido

¿Cómo hacer que una aplicación node.js se ejecute de forma permanente?

Este grupo de expertos pasados varios días de investigación y recopilación de de datos, hallamos la respuesta, queremos que resulte de utilidad en tu trabajo.

Solución:

Podrías instalar para siempre usando npm así:

sudo npm install -g forever

Y luego comience su aplicación con:

forever server.js

O como un servicio:

forever start server.js

Siempre reinicia su aplicación cuando falla o se detiene por algún motivo. Para restringir los reinicios a 5, podría usar:

forever -m5 server.js

Para enumerar todos los procesos en ejecución:

forever list

Tenga en cuenta el número entero entre paréntesis y utilícelo de la siguiente manera para detener un proceso:

forever stop 0

Reiniciar un proceso en ejecución va:

forever restart 0

Si está trabajando en su archivo de solicitud, puede usar el -w parámetro para reiniciar automáticamente cada vez que su server.js cambios de archivo:

forever -w server.js

Aunque las otras respuestas resuelven el problema del OP, todas son exageradas y no explican por qué él o ella está experimentando este problema.

Él key es esta línea, “Cierro masilla, luego no puedo llegar a la dirección”

Cuando inicia sesión en su host remoto en Putty, ha iniciado un proceso SSH Linux y todos los comandos escritos desde esa sesión SSH se ejecutarán como elementos secundarios de dicho proceso.

Su problema es que cuando cierra Putty, está saliendo de la sesión SSH, lo que elimina ese proceso y cualquier proceso secundario activo. Cuando cierra PuTTY, inadvertidamente mata su servidor porque lo ejecutó en el primer plano. Para evitar este comportamiento, ejecute el servidor en el antecedentes agregando & a su comando:

node /srv/www/MyUserAccount/server/server.js &

El problema aquí es la falta de conocimiento de Linux y no una pregunta sobre node. Para obtener más información, consulte: http://linuxconfig.org/understanding-foreground-and-background-linux-processes

ACTUALIZAR:

Como han mencionado otros, el servidor de nodo aún puede morir al salir de la terminal. Un problema común con el que me he encontrado es que, aunque el proceso del nodo se está ejecutando en bg, es stdout y stderr aún apunta a la terminal. Esto significa que si el servidor del nodo escribe en console.log o console.error, recibirá un error de tubería rota y se bloqueará. Esto se puede evitar canalizando la salida de su proceso:

node /srv/www/MyUserAccount/server/server.js > stdout.txt 2> stderr.txt &

Si el problema persiste, debe buscar cosas como tmux o Nohupque siguen siendo más robustas que las soluciones específicas de nodo, porque se pueden utilizar para ejecutar todo tipo de procesos (bases de datos, servicios de registro, otros lenguajes).

Un error común que podría hacer que el servidor se cerrara es que después de ejecutar el nohup node your_path/server.js & simplemente cierre la terminal Putty con un simple clic. Deberías usar exit comando en su lugar, entonces su servidor de nodo estará en funcionamiento.

Puede usar PM2, es un administrador de procesos de producción para aplicaciones Node.js con un balanceador de carga incorporado.

Instalar PM2

$ npm install pm2 -g

Iniciar una aplicación

$ pm2 start app.js

Si usa Express, puede iniciar su aplicación como

pm2 start ./bin/www --name="app"

Listado de todos los procesos en ejecución:

$ pm2 list

Enumerará todo el proceso. Luego puede detener / reiniciar su servicio usando la ID o el Nombre de la aplicación con el siguiente comando.

$ pm2 stop all                  
$ pm2 stop 0                    
$ pm2 restart all               

Para mostrar registros

$ pm2 logs ['all'|app_name|app_id]

Más adelante puedes encontrar las notas de otros usuarios, tú incluso tienes la habilidad dejar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *