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

De enunpimpam
Saltar a: navegación, buscar
Línea 31: Línea 31:
 
Ejecutar y añadir la aplicación, con la opción --name indicamos el nombre con el que se va a ejecutar.
 
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 start heyy.js --name 'prueba'
 +
<syntaxhighlight lang="bash">
 +
[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  │
 +
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
 +
</syntaxhighlight>
 +
 +
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:
 +
<syntaxhighlight lang="bash">
 +
[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 sammy --hp /root
 +
 +
</syntaxhighlight>

Revisión del 18:06 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 sammy --hp /root