Diferencia entre revisiones de «Aplicacion Node en producción en Ubuntu»

De enunpimpam
Saltar a: navegación, buscar
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 sammy --hp /root
+
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u root --hp /root
 +
</syntaxhighlight>
  
</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