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 -g
opción le dice npm
que 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.