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


PM2 es un administrador de procesos de código abierto, avanzado, eficiente y multiplataforma de código abierto 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 los micro-servicios/procesos, la ejecución de aplicaciones en modo de clúster, el inicio y el cierre correcto de las aplicaciones.

Mantiene sus aplicaciones " vivas para siempre " con reinicios automáticos y puede habilitarse para iniciarse en el inicio del sistema, permitiendo así Alta disponibilidad ( HA ) Configuraciones o arquitecturas.

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

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

En este artículo, explicaremos cómo instalar y usar PM2 para ejecutar 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 a utilizarla.

Paso 1: Instala 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 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, vamos a crear una aplicación de prueba (asumiremos que tiene un lado de cliente y administrador que comparten la misma base de datos), los microservicios se ejecutarán en los puertos 3000 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 las siguientes piezas 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: Instalar PM2 Product Process Manager en Linux

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

$ sudo npm i -g pm2 

4. Una vez que se haya instalado PM2 , puede iniciar sus aplicaciones de nodo con 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 utilizando 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 clúster utilizando 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 listar todas las aplicaciones de su nodo (proceso/microservicios), ejecute el siguiente comando.

$ sudo pm2 list

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

$ sudo pm2 monit

8. Para ver los detalles de un solo proceso de Nodo como se muestra, usando la 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 de los comandos de administración de procesos comunes (únicos 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 aplicaciones, 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: Acceso a 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 las conexiones de los clientes 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 y simple para ampliar sus capacidades principales, algunos de los módulos incluyen pm2-logrotate, pm2-webshell, pm2-server-monit y más - También puedes crear y usar tus propios módulos.

Para obtener más información, vaya al repositorio PM2 GitHub: 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 incorporado. En este artículo, mostramos cómo instalar y usar PM2 para administrar las aplicaciones Nodejs en Linux. Si tiene alguna consulta, envíela para usarla a través del formulario de comentarios a continuación.