Encontramos la respuesta a este atolladero, al menos eso pensamos. Si continuas con preguntas coméntalo, para nosotros será un placer ayudarte
Solución:
Un servidor (NodeJS) no debe detenerse sin motivo. La mayoría de las veces, se debe a un error 500 que no se ha catch
ed y detenga el servidor, luego tendrá que reiniciarlo.
forever
esta usando node
por defecto para iniciar su servidor.
nodemon
es un paquete npm que reinicia su servidor cuando cambia el código o cuando su servidor se detiene.
Puedes usar forever
y nodemon
juntos haciendo:
forever start nodemon --exitcrash app.js
o
forever start -c nodemon app.js
O, como se sugiere en otras respuestas, puede usar PM2, ¡lo que sería mejor para la producción!
Yo sugeriría el uso de PM2
Esta es la mejor opción para ejecutar en un servidor de producción.
¿Cuáles son las ventajas de ejecutar su aplicación de esta manera?
- Es fácil de configurar y ejecutar.
- PM2 reiniciará automáticamente su aplicación si falla.
- PM2 mantendrá un registro de sus excepciones no controladas; en este caso, en un archivo en
/home/safeuser/.pm2/logs/app-err.log
. - Con un comando, PM2 puede garantizar que cualquier aplicación que administre se reinicie cuando el servidor se reinicie. Básicamente, significa que su aplicación de nodo comenzará como un servicio.
ref: https://www.digitalocean.com/community/tutorials/how-to-use-pm2-to-setup-a-node-js-production-environment-on-an-ubuntu-vps
Así que este es un ejemplo de uso cron
para ejecutar scripts que pueden reiniciar el servicio/realizar alguna tarea automatizada. Básicamente, creé algunos scripts que necesito ejecutar en ciertos intervalos de tiempo en mi servidor. Para su caso, desea crear un script que verifique automáticamente el estado de su forever.js y, si arroja una respuesta incorrecta, ejecute el forever restartall
comando que mencionas arriba.
Puede configurar esto creando una nueva entrada crontab en el servidor. En lo que respecta al guión, De ninguna manera soy un gurú de script bash; Hice un script simple que funciona para mí. Aquí hay un ejemplo de cómo verificar un servicio en mi máquina y reiniciarlo si no se está ejecutando.
#!/bin/bash
zabbix_server="service zabbix-server"
zabbix_agent="service zabbix-agent"
logfile=zabbix_auto_restart.log
logfilePath=/etc/scripts/zabbix/$logfile
zabbix_server_running=0
zabbix_agent_running=0
grep_agent () grep zabbix_agentd
grep_server () grep zabbix_server
check_zabbix_agentd () mutt -s "Zabbix Auto-restart Script Just Ran"
else
let zabbix_agent_running=1
fi
check_zabbix_server () mutt -s "Zabbix Auto-restart Script Just Ran" [email protected]
else
let zabbix_server_running=1
fi
main_loop ()
until ((zabbix_server_running == 1 && zabbix_agent_running == 1));
do
check_zabbix_agentd
check_zabbix_server
sleep 1.5
done
main_loop
Comentarios y valoraciones del tutorial
Recuerda dar recomendación a este post si te fue de ayuda.