Habilita tu app en NodeJS como un servicio mas del SO y controlalo con systemctl
Creando un archivo de servicio systemd
Los archivos de servicios systemd esta en:
/lib/systemd/system
Para crear un nuevo servicio, debemos crear un archivo con los detalles:
sudo nano /lib/systemd/system/mi_servicio.service
mi_servicio
es el nombre con el que se reconocer el servicio.
[Unit]
Description=hello_env.js - making your environment variables rad
Documentation=https://example.com
After=network.target
[Service]
Environment=NODE_PORT=3001
Type=simple
User=ubuntu
ExecStart=/usr/bin/node /home/ubuntu/hello_env.js
Restart=on-failure
[Install]
WantedBy=multi-user.target
donde:
Description
descripción del servicio
Documentation
Referencia donde encontrar la documentación
After=network.target
Para que el servicio espere a que los servicios de res esten disponibles.
Environment=NODE_PORT=3001
: Permite setear variables de entorno
Type=simple
User=ubuntu
: Usuario bajo el cual se ejecutara el servicio
ExecStart=node /home/ubuntu/app.js
: Comando que se ejecutara para levantar el servicio
Restart=on-failure
: Para que se vuelva a iniciar frente a un fallo
WantedBy=multi-user.target
Usando systemctl para controlar nuestra aplicación
Recargamos systemctl para que reconozca el archivo que agregamos anteriormete.
sudo systemctl daemon-reload
Iniciamos el servicio
sudo systemctl start mi_servicio
Recuerda que mi_servicio
corresponde al nombre del archivo mi_servicio.service
creado anteriormente
Luego verificamos el status
del servicio
sudo systemctl status cloud9
Deberiamos tener por respuesta algo como esto
● cloud9.service - Cloud9 CORE - Entorno de Desarrollo
Loaded: loaded (/lib/systemd/system/cloud9.service; disabled)
Active: inactive (dead)
Docs: https://c9.io
Le diremos a systemd que inicie nuestra aplicacion en NodeJs junto con el sistema operativo
sudo systemctl enable cloud9
Si luego quieres que no inicie
sudo systemctl disable cloud9
Lectura Recomendada: How To Use Systemctl to Manage Systemd Services and Units