Com instal·lar PM2 per executar aplicacions Node.js al servidor de producció


PM2 és un gestor de processos gratuït de codi obert, avançat, eficient i multiplataforma a nivell de producció per a Node.js amb un equilibrador de càrrega integrat. Funciona amb Linux, MacOS i Windows. Admet la supervisió d'aplicacions, la gestió eficient de microserveis/processos, l'execució d'aplicacions en mode de clúster, l'inici i l'apagat elegants d'aplicacions.

Manté les vostres aplicacions \vives per sempre amb reinicis automàtics i es pot activar per iniciar-se a l'inici del sistema, permetent així configuracions o arquitectures d'alta disponibilitat (HA).

En particular, PM2 us permet executar les vostres aplicacions en mode de clúster sense fer cap canvi al vostre codi (això també depèn del nombre de nuclis de CPU del vostre servidor). També us permet gestionar fàcilment els registres d'aplicacions i molt més.

A més, també té un suport increïble per als marcs principals de Node.js com Express, Adonis Js, Sails, Hapi i més, sense necessitat de cap canvi de codi. El PM2 està sent utilitzat per empreses com IBM, Microsoft, PayPal i més.

En aquest article, explicarem com instal·lar i utilitzar PM2 per executar aplicacions Nodejs al servidor de producció de Linux. Crearem una aplicació per demostrar algunes de les característiques fonamentals de PM2 perquè comenceu a utilitzar-la.

Pas 1: instal·leu Nodejs i NPM a Linux

1. Per instal·lar la versió més recent de Node.js i NPM, primer heu d'habilitar el dipòsit oficial de NodeSource a la vostra distribució Linux i després instal·leu els paquets Node.js i NPM tal com es mostra.

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

Pas 2: creeu una aplicació Nodejs

2. Ara, anem a crear una aplicació de prova (suposarem que té un costat de client i d'administrador que comparteixen la mateixa base de dades), els microserveis s'executaran als ports 3000 i 3001 respectivament.

$ 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ó, copieu i enganxeu els fragments de codi següents als fitxers server.js (substituïu 192.168.43.31 per la IP del vostre 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}/`);
});

Desa el fitxer i surt.

Pas 3: instal·leu PM2 Product Process Manager a Linux

3. La darrera versió estable de PM2 està disponible per instal·lar-la mitjançant NPM, tal com es mostra.

$ sudo npm i -g pm2 

4. Un cop instal·lat PM2, podeu iniciar les vostres aplicacions de nodes mitjançant les ordres següents.

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

Tingueu en compte que, en un entorn de producció, hauríeu d'iniciar-los amb PM2, tal com es mostra (pot ser que no necessiteu l'ordre sudo si la vostra aplicació s'emmagatzema en una ubicació on un usuari normal té permisos de lectura i escriptura).

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

Pas 4: Com utilitzar i gestionar PM2 a Linux

5. Per iniciar una aplicació en mode clúster utilitzant el senyalador -i per especificar el nombre d'instàncies, per exemple.

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

6. Per llistar totes les aplicacions de nodes (procés/microserveis), executeu l'ordre següent.

$ sudo pm2 list

7. Per supervisar els registres, les mètriques personalitzades, processeu la informació de tots els processos executant l'ordre següent.

$ sudo pm2 monit

8. Per veure els detalls d'un sol procés de node tal com es mostra, utilitzant l'ID o el nom del procés.

$ sudo pm2 show 0

Pas 5: Com gestionar les aplicacions de nodes amb PM2 a Linux

9. La següent és una llista d'algunes ordres de gestió de processos habituals (un sol o tots) que hauríeu de tenir en compte.

$ 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. Per gestionar els registres d'aplicacions, utilitzeu les ordres següents.

$ 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. Per gestionar el procés PM2, utilitzeu les ordres següents.

$ 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

Pas 6: Accediu a les aplicacions del node des del navegador web

12. Per accedir a totes les aplicacions del vostre node des d'un navegador web remot, primer heu d'obrir els ports següents al tallafoc del vostre sistema per permetre connexions de client a les aplicacions tal com es mostra.

-------- 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. A continuació, accediu a les vostres aplicacions des d'un navegador web amb aquests URL:

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

Finalment, però no menys important, PM2 és un sistema de mòduls senzill integrat per ampliar les seves capacitats bàsiques, alguns dels mòduls inclouen pm2-logrotate, pm2-webshell, pm2-server-monit i molt més; també podeu crear i utilitzar el vostre mòduls propis.

Per obtenir més informació, aneu al repositori PM2 GitHub: https://github.com/Unitech/PM2/.

Això és tot! PM2 és un gestor de processos avançat i eficient a nivell de producció per a Node.js amb un equilibrador de càrrega integrat. En aquest article, vam mostrar com instal·lar i utilitzar PM2 per gestionar les aplicacions Nodejs a Linux. Si teniu cap pregunta, envieu-la per utilitzar-la a través del formulari de comentaris a continuació.