Diferencia entre revisiones de «Aplicacion Node en producción en Ubuntu»
Línea 48: | Línea 48: | ||
[PM2] Init System found: systemd | [PM2] Init System found: systemd | ||
[PM2] To setup the Startup Script, copy/paste the following command: | [PM2] To setup the Startup Script, copy/paste the following command: | ||
− | sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u | + | sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u root --hp /root |
+ | </syntaxhighlight> | ||
− | + | Ahora guardamos la lista de procesos de PM2 | |
+ | pm2 save | ||
+ | |||
+ | iniciamos el servicio | ||
+ | sudo systemctl start pm2-root | ||
+ | comprobamos el estado de la unidad de sytemd | ||
+ | systemctl status pm2-root | ||
+ | ==Comandos MP2== | ||
+ | Detener una aplicación por el nombre o id | ||
+ | pm2 stop app_name_or_id | ||
+ | Reiniciar una aplicación | ||
+ | pm2 restart app_name_or_id | ||
+ | Listar las aplicaciones | ||
+ | pm2 list | ||
+ | Obtener información de las aplicaciones | ||
+ | pm2 info app_name_or_id | ||
+ | Borrar una aplicación | ||
+ | pm2 delete app_name_or_id |
Revisión del 18:13 29 sep 2021
Crear una aplicación simple
nano heey.js
const http = require('http'); const port = 8088; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Heeeeey que pasa!\n'); }); server.listen(port, hostname, () => { console.log(`El servidor esta funcionando en: http://localhost:${port}/`); });
Coprobamos el funcionamiento
node heyy.js
El servidor esta funcionando en: http://localhost:8088/
Nota: Node bloquea la posibilidad introducir comandos para detener node, pulsamos CTRL + C
Instalar PM2
PM2 es un administrador de procesos para aplicaciones de Node.js, permite implementar daemon, que funcionaran como servicios.
sudo npm install pm2@latest -g
Ejecutar y añadir la aplicación, con la opción --name indicamos el nombre con el que se va a ejecutar.
pm2 start heyy.js --name 'prueba'
[PM2] Starting /root/hello.js in fork_mode (1 instance) [PM2] Done. ┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐ │ id │ name │ mode │ ↺ │ status │ cpu │ memory │ ├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤ │ 3 │ notas │ fork │ 2 │ online │ 0% │ 56.4mb │ │ 4 │ prueba │ fork │ 0 │ online │ 0% │ 25.2mb │ └────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
Las aplicaciones que se ejecutan en PM2 se reiniciarán de forma automática si la aplicación se bloquea o se detiene, pero podemos dar un paso adicional para que se cargue en el inicio del sistema usando el subcomando startup. Este subcomando genera y configura una secuencia de comandos de inicio para iniciar PM2 y sus procesos administrados al iniciarse el servidor:
pm2 startup systemd
En la última línea del resultado obtenido se incluirá un comando que se ejecutará con privilegios de superusuario a fin de configurar PM2 para que se cargue en el inicio:
[PM2] Init System found: systemd [PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u root --hp /root
Ahora guardamos la lista de procesos de PM2
pm2 save
iniciamos el servicio
sudo systemctl start pm2-root
comprobamos el estado de la unidad de sytemd
systemctl status pm2-root
Comandos MP2
Detener una aplicación por el nombre o id
pm2 stop app_name_or_id
Reiniciar una aplicación
pm2 restart app_name_or_id
Listar las aplicaciones
pm2 list
Obtener información de las aplicaciones
pm2 info app_name_or_id
Borrar una aplicación
pm2 delete app_name_or_id