Como estuvimos hablando en publicaciones anteriores, PM2 es un gestor para el servidor Node.js, la instalación es sencilla en Ubuntu 22.04, pero como pre-requisito debemos tener instalado Node.js previamente, podemos seguir el paso a paso desde: https://nksistemas.com/como-instalar-node-js-y-npm-en-ubuntu-22-04-lts/

Ahora ya estamos en condiciones de instalar pm2, siguiendo este breve guía.

Las principales características de pm2:

  • Capacidad de manejar un montón de apps. (Ver el estado de distintas apps)
  • Capacidad de monitoreo de memoria y cps de nuestros procesos.
  • Manejo de logs.
  • Balanceo de carga.
  • Iniciar tus aplicaciones una vez el servidores se inicia.
  • Capacidad de “watch your code” si tu código cambia.

1- Iniciando un servicio con node.

1.1- Lo primero que vamos a mostrar es como crear un archivo js, para que muestre un hola mundo y lanzarlo con node.

nano hola.js

Pegamos lo siguiente:

const http = require('http');

const hostname = 'localhost';
const port = 3000;

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hola Mundo!!!\n');
});

server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

1.2- Iniciamos la app

node hola.js

1.3- Vamos a comprobar que funciona haciendo un curl, al puerto 3000 que será donde está corriendo nuestra apliación.

curl http://localhost:3000

1.4- La forma de cortar el proceso es con CTRL + C.

2- Instalación de PM2 y sus Comandos

Lo hacemos con npm, por eso es importante el tutorial anterior. Y al usar pm2 podemos garantizar que la app corra aún cuando se reinicie el servidor.

sudo npm install pm2@latest -g

La -gopción le dice npmque instale el módulo globalmente, para que esté disponible en todo el sistema.

2.1- Una vez instalado podemos lanzar nuestra aplicación.

pm2 start hola.js

2.2- Las aplicaciones que se ejecutan bajo PM2 se reiniciarán automáticamente si la aplicación falla o se cierra, pero podemos dar un paso adicional para que la aplicación se inicie al iniciar el sistema haciendo uso de un subcomando llamado startup. Este subcomando genera y configura un script de inicio para iniciar PM2 y sus procesos administrados al iniciar un server:

pm2 startup systemd

2.3- Esto se puede hacer como usuario, porque en el comando anterior lo hice como root. Solo debes cambiar tu usuario, en el siguiente ejemplo es nksistemas.

sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u nksistemas --hp /home/nksistemas

2.4- Para desinstalar pm2 del arranque del sistema:

pm2 unstartup systemd

2.5- Como paso adicional, podemos guardar la lista de procesos de PM2 y los entornos correspondientes

pm2 save

2.6- Iniciamos el servicio con systemctl

sudo systemctl start pm2-root
o
sudo systemctl start pm2-nksistemas

2.7- Vemos el estado con

systemctl status pm2-nksistemas

2.8- Otras opciones de PM2

2.8.1- Detener una aplicación podemos usar el nombre o ID

pm2 stop nombre_o_id

2.8.2- Reiniciar una aplicación:

pm2 restart nombre_o_id

2.8.3- Enumerar las aplicaciones administradas actualmente por PM2

pm2 list

2.8.4- Obtener información sobre una aplicación específica usando su nombre:

pm2 info nombre_app

Para mostrar información detallada de tu aplicación, utiliza el siguiente comando:

pm2 show nombre_app

2.8.5- Saber el estado de la aplicación, consumo de CPU y memoria.

pm2 monit

2.8.6- Ver los logs de la aplicación

pm2 logs nombre_app

2.8.7- Suprimir la aplicación

pm2 delete nombre_app

2.8.8- Para eliminar todos los logs

pm2 flush

2.8.9- Para actualizar PM2, utiliza el siguiente comando:

pm2 update

2.8.10- Para reiniciar, eliminar o detener todas las aplicaciones podemos usar all, por ejemplo para reiniciar todo:

pm2 restart all

2.9- Procesos de restauración manual

Si guardaste la lista de procesos con save, pero PM2 no los restauró en el arranque, se puede hacer manualmente con la opción resurrect:

pm2 resurrect

Esto hará que los procesos volcados vuelvan a estar en línea y no es necesario que se inicien manualmente en cada servidor.

RECOMENDADO DE HOYLibre

Deja un comentario