Respuesta de 2016 : casi todas las distribuciones de Linux vienen con systemd, lo que significa que para siempre, monit, PM2, etc. ya no son necesarias: su sistema operativo ya maneja estas tareas .
Cree un myapp.service
archivo (reemplazando 'myapp' con el nombre de su aplicación, obviamente):
[Unit]
Description=My app
[Service]
ExecStart=/var/www/myapp/app.js
Restart=always
User=nobody
# Note Debian/Ubuntu uses 'nogroup', RHEL/Fedora uses 'nobody'
Group=nobody
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/myapp
[Install]
WantedBy=multi-user.target
Tenga en cuenta si es nuevo en Unix: /var/www/myapp/app.js
debería tener #!/usr/bin/env node
en la primera línea.
Copie su archivo de servicio en la /etc/systemd/system
carpeta.
Informe a systemd sobre el nuevo servicio con systemctl daemon-reload
.
Comenzar con systemctl start myapp
.
Permitir que se ejecute en el arranque con systemctl enable myapp
.
Ver registros con journalctl -u myapp
Esto se toma de Cómo implementamos aplicaciones de nodo en Linux, edición 2018 , que también incluye comandos para generar un AWS / DigitalOcean / Azure CloudConfig para construir servidores Linux / nodo (incluido el .service
archivo).