Crear una aplicación node.js es una cosa. Asegurarse de que siempre esté operativo es otra. Este artículo detalla un enfoque simple para mantener su aplicación node.js en línea en alojamiento compartido.
Estos son los tres pasos a seguir:
- - Escriba código robusto de node.js con rutinas de manejo de fallas y errores
- - Utilice el administrador de procesos PM2 para detectar y reiniciar fallas inesperadas
- - Configure crontab en el alojamiento compartido para verificar y reiniciar periódicamente
Escribe código robusto de node.js
Lo primero es lo primero. Comience escribiendo su código de la manera recomendada en node.js. Eso significa, use llamadas asincrónicas para funciones que pueden llevar algún tiempo. Además, detecta situaciones de error siempre que sea posible. Cuando experimente que su aplicación se detiene, averigüe por qué. Luego, detecte la situación por código, si es posible.
Utilice el administrador de procesos PM2
PM2 es un administrador de procesos de producción para node.js. PM2 monitorea su aplicación y la reinicia automáticamente cuando un evento inesperado hace que se bloquee. Instale PM2 usando:
npm install pm2
y úselo para iniciar su aplicación
pm2 start myapp.js
Una vez que ha comenzado así, PM2 enumera todas las aplicaciones en ejecución (sí, ¡puede darle varias aplicaciones si lo desea!) Y le muestra los detalles de cada una de ellas.
pm2 list
pm2 show <app-id>
Hasta aquí todo bien. Ahora bien, ¿qué sucede cuando el servidor de alojamiento compartido que ejecuta su aplicación se reinicia o, lo que es peor, se bloquea? Correcto, el proceso de PM2 se mata y no se reinicia automáticamente. Lo mismo ocurre con su aplicación.
Para manejar también esa situación, se necesita una tercera medida.
Configurar crontab en alojamiento compartido
Un crontab que puede ver como una lista de comandos que deben ejecutarse en momentos específicos. Estos tiempos pueden ser intervalos fijos (digamos, por ejemplo, cada 5 minutos) o eventos del sistema (por ejemplo, reinicio del servidor de alojamiento compartido).
Crontab se utiliza aquí para:
- - comprobar periódicamente y en el servidor reiniciar el estado de la aplicación, y
- - reinicie el proceso de PM2 en caso de que se encuentre muerto
De esta manera, se minimiza el tiempo de inactividad de la aplicación node.js en el alojamiento compartido. Comience escribiendo un script que verifique el estado de ejecución de su aplicación:
#!/bin/bash
ps cax | grep node > /dev/null
if [ $? -eq 0 ]; then
echo "Process is running." >/dev/null 2>&1
else
echo "Process is not running."
PATH=$PATH:/usr/local/bin
pm2 start /path/to/your/node/application
fi
Este código verificará si se está ejecutando un proceso llamado "node" y, si no, lo reinicia usando pm2. Ahora agregue la ejecución periódica de este código usando cPanel como un trabajo cron que se ejecuta cada 5 minutos:
sh /path/to/your/script
Al implementar estas tres medidas, nos aseguramos de que nuestra aplicación node.js siga ejecutándose en un alojamiento compartido. En caso de falla inesperada, PM2 lo detectará y reiniciará. En caso de inactividad o reinicio del servidor, un script personalizado que se ejecuta periódicamente detecta la situación y reinicia la aplicación automáticamente.
Además de todo esto, puede configurar cPanel para enviar correos electrónicos cuando un trabajo cron produce una salida. De esta manera, recibe una notificación cuando la aplicación está inactiva y se reinicia.