Búsqueda de sitios web

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


PM2 es un administrador de procesos de nivel de producción multiplataforma, avanzado, eficiente y de código abierto gratuito para Node.js con un equilibrador de carga integrado. Funciona en Linux, MacOS y Windows. Admite monitoreo de aplicaciones, gestión eficiente de microservicios/procesos, ejecución de aplicaciones en modo clúster, inicio y cierre ordenados de aplicaciones.

Mantiene sus aplicaciones “vivas para siempre” con reinicios automáticos y se puede habilitar para que se inicien al iniciar el sistema, lo que permite alta disponibilidad (HA) configuraciones o arquitecturas.

En particular, PM2 le permite ejecutar sus aplicaciones en modo 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 Node.js como Express, Adonis Js, Sails. , Hapi y más, sin necesidad de realizar ningún cambio en el código. PM2 lo utilizan empresas como IBM, Microsoft, PayPal y más.

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

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 Paquetes Node.js y NPM como se muestra.

En Debian/Ubuntu

---------- 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

En CentOS/RHEL y Fedora

---------- 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 lado cliente y 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 las aplicaciones de su 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 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, procesar 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 (individuales o todos) que debe tomar nota.

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, utilice 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 gestionar el proceso PM2, utilice 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 Node 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 simple e integrado 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 utilizar tus 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 usarla a través del formulario de comentarios a continuación.