Cómo instalar PM2 para ejecutar aplicaciones Node.js en el servidor de producción


PM2 es un administrador de procesos de nivel de producción de código abierto, avanzado, eficiente y multiplataforma para Node.js con un equilibrador de carga incorporado. Funciona en Linux, MacOS y Windows. Es compatible con la supervisión de aplicaciones, la gestión eficiente de microservicios/procesos, la ejecución de aplicaciones en modo de clúster, el inicio y el cierre elegantes de aplicaciones.

Mantiene sus aplicaciones "vivas para siempre" con reinicios automáticos y se puede habilitar para que se inicien en el inicio del sistema, lo que permite configuraciones o arquitecturas de alta disponibilidad (HA).

En particular, PM2 le permite ejecutar sus aplicaciones en modo de clúster sin realizar ningún cambio en su código (esto también depende de la cantidad de núcleos de CPU en su servidor). También le permite administrar fácilmente los registros de aplicaciones y mucho más.

Además, también tiene un soporte increíble para los principales frameworks de Node.js como Express, Adonis Js, Sails, Hapi y más, sin necesidad de ningún cambio de código. PM2 está siendo utilizado por empresas como IBM, Microsoft, PayPal y más.

En este artículo, explicaremos cómo instalar y usar PM2 para ejecutar aplicaciones Nodejs en el servidor de producción de Linux. Crearemos una aplicación para demostrar algunas de las características fundamentales de PM2 para que pueda comenzar con ella.

Paso 1: Instale Nodejs y NPM en Linux

1. Para instalar la versión más reciente de Node.js y NPM, primero debe habilitar el repositorio oficial de NodeSource en su distribución de Linux y luego instalar los paquetes de Node.js y NPM como se muestra.

---------- Install Node.js v11.x ---------- 
$ curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
$ sudo apt-get install -y nodejs

---------- Install Node.js v10.x ----------
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs
---------- Install Node.js v11.x ---------- 
$ curl -sL https://rpm.nodesource.com/setup_11.x | bash -

---------- Install Node.js v10.x ----------
$ curl -sL https://rpm.nodesource.com/setup_10.x | bash -

Paso 2: crea una aplicación Nodejs

2. Ahora, creemos una aplicación de prueba (asumiremos que tiene un cliente y un administrador que comparten la misma base de datos), los microservicios se ejecutarán en los puertos 3000 y 3001 respectivamente.

$ sudo mkdir -p /var/www/html/app
$ sudo mkdir -p /var/www/html/adminside
$ sudo vim /var/www/html/app/server.js
$ sudo vim /var/www/html/adminside/server.js

A continuación, copie y pegue los siguientes fragmentos de código en los archivos server.js (reemplace 192.168.43.31 con la IP de su servidor).

##mainapp code
const http = require('http');

const hostname = '192.168.43.31';
const port = 3000;

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

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});
##adminside code
const http = require('http');

const hostname = '192.168.43.31';
const port = 3001;

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

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

Guarda el archivo y cierra.

Paso 3: Instale PM2 Product Process Manager en Linux

3. La última versión estable de PM2 está disponible para instalar a través de NPM como se muestra.

$ sudo npm i -g pm2 

4. Una vez instalado PM2, puede iniciar sus aplicaciones de nodo usando los siguientes comandos.

$ sudo node /var/www/html/app/server.js
$ sudo node /var/www/html/adminside/server.js

Tenga en cuenta que, en un entorno de producción, debe iniciarlos usando PM2, como se muestra (es posible que no necesite el comando sudo si su aplicación está almacenada en una ubicación donde un usuario normal tiene permisos de lectura y escritura).

$ sudo pm2 start /var/www/html/app/server.js
$ sudo pm2 start /var/www/html/adminside/server.js

Paso 4: Cómo usar y administrar PM2 en Linux

5. Para iniciar una aplicación en modo de clúster usando el indicador -i para especificar el número de instancias, por ejemplo.

$ sudo pm2 start /var/www/html/app/server.js -i 4 
$ sudo pm2 scale 0 8			#scale cluster app to 8 processes

6. Para enumerar todas sus aplicaciones de nodo (proceso/microservicios), ejecute el siguiente comando.

$ sudo pm2 list

7. Para monitorear registros, métricas personalizadas, procese información de todos los procesos ejecutando el siguiente comando.

$ sudo pm2 monit

8. Para ver los detalles de un proceso de nodo único como se muestra, utilizando el ID o el nombre del proceso.

$ sudo pm2 show 0

Paso 5: Cómo administrar aplicaciones de nodo usando PM2 en Linux

9. La siguiente es una lista de algunos comandos de administración de procesos comunes (uno o todos) que debe tener en cuenta.

$ sudo pm2 stop all                  		#stop all apps
$ sudo pm2 stop 0                    		#stop process with ID 0
$ sudo pm2 restart all               		#restart all apps
$ sudo pm2 reset 0		         	#reset all counters
$ sudo pm2 delete all                		#kill and remove all apps
$ sudo pm2 delete 1                 		#kill and delete app with ID 1

10. Para administrar los registros de la aplicación, use los siguientes comandos.

$ sudo pm2 logs                      	#view logs for all processes 
$ sudo pm2 logs 1	         	#view logs for app 1
$ sudo pm2 logs --json               	#view logs for all processes in JSON format
$ sudo pm2 flush			#flush all logs

11. Para administrar el proceso de PM2, use los siguientes comandos.

$ sudo pm2 startup            #enable PM2 to start at system boot
$ sudo pm2 startup systemd    #or explicitly specify systemd as startup system 
$ sudo pm2 save               #save current process list on reboot
$ sudo pm2 unstartup          #disable PM2 from starting at system boot
$ sudo pm2 update	      #update PM2 package

Paso 6: Acceda a las aplicaciones de nodo desde el navegador web

12. Para acceder a todas las aplicaciones de su nodo desde un navegador web remoto, primero debe abrir los siguientes puertos en el firewall de su sistema, para permitir conexiones de cliente a las aplicaciones como se muestra.

-------- Debian and Ubuntu -------- 
$ sudo ufw allow 3000/tcp
$ sudo ufw allow 3001/tcp
$ sudo ufw reload

-------- RHEL and CentOS --------
# firewall-cmd --permanent --add-port=3000/tcp
# firewall-cmd --permanent --add-port=3001/tcp
# firewall-cmd --reload 

13. Luego, acceda a sus aplicaciones desde un navegador web con estas URL:

http://198.168.43.31:3000
http://198.168.43.31:3001 

Por último, pero no menos importante, PM2 es un sistema de módulos integrado simple para ampliar sus capacidades principales, algunos de los módulos incluyen pm2-logrotate, pm2-webshell, pm2-server-monit, y más; también puede crear y usar su propios módulos.

Para obtener más información, vaya al repositorio de GitHub de PM2: https://github.com/Unitech/PM2/.

¡Eso es todo! PM2 es un administrador de procesos de nivel de producción avanzado y eficiente para Node.js con un equilibrador de carga integrado. En este artículo, mostramos cómo instalar y usar PM2 para administrar aplicaciones Nodejs en Linux. Si tiene alguna consulta, envíela para utilizarla a través del formulario de comentarios a continuación.