Node como servicio en CentOS 7

Al instalar Node este no lo hace como un servicio, por eso para entornos de producción donde es necesario que el sistema este activo 24/7 es necesario utilizar alguna herramienta para este propósito. Existen varias alternativas entre las cuales está crear un script y ejecutarlo como servicio, utilizar upstart o módulos propios de node como forever o pm2, de este último va el post.
PM2 es un gestor de procesos en entornos de producción para aplicaciones Node.js con un balanceador de carga incorporado. Permite mantener las aplicaciones siempre activas, recargarlas sin tiempo de inactividad y facilitar las tareas comunes de un administrador del sistema.

sudo npm install pm2@latest -g
sudo pm2 startup
sudo pm2 save
sudo pm2 start app.js
sudo systemctl restart pm2-root

$ sudo pm2 start app.js
[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /folder/app.js in fork_mode (1 instance)
[PM2] Done.
┌──────────┬────┬──────┬─────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem       │ watching │
├──────────┼────┼──────┼─────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤
│ app      │ 0  │ fork │ 534 │ online │ 0       │ 0s     │ 8%  │ 12.0 MB   │ disabled │
└──────────┴────┴──────┴─────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘
 Use `pm2 show ` to get more details about an app
$ sudo pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /root/.pm2/dump.pm2

Con estos 5 comandos tendríamos nuestra aplicación corriendo como servicio. Es recomendable ejecutar estos comandos como root para evitar problemas de permisos aunque puedes ejecutarlos como usuario normal pero necesitaras permisos sudo para incluir algunas variables de sistema.

[PM2] Init System found: systemd
[PM2] You have to run this command as root. Execute the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 \
     startup systemd -u user --hp /home/user

¿Cómo funciona pm2?

Lo que hace es crear un script que busca en la carpeta /root/.pm2/dump.pm2 los procesos que queremos vigilar, agregar aplicaciones a esta lista es lo que hacemos con los comandos start y save.
Os recomiendo leer la documentación de pm2 para más opciones.

Comentarios