Zoeken op website

PM2 installeren om Node.js-apps op productieserver uit te voeren


PM2 is een gratis open source, geavanceerde, efficiënte en platformonafhankelijke procesmanager op productieniveau voor Node.js met een ingebouwde load balancer. Het werkt op Linux, MacOS en Windows. Het ondersteunt app-monitoring, efficiënt beheer van microservices/processen, het uitvoeren van apps in clustermodus, het soepel starten en afsluiten van apps.

Het houdt uw apps “voor altijd in leven” door automatisch opnieuw op te starten en kan worden ingeschakeld om te starten bij het opstarten van het systeem, waardoor Hoge beschikbaarheid (HA) mogelijk is configuraties of architecturen.

Met PM2 kunt u uw apps in de clustermodus uitvoeren zonder wijzigingen in uw code aan te brengen (dit hangt ook af van het aantal CPU-kernen op uw server). Hiermee kunt u ook eenvoudig app-logboeken beheren, en nog veel meer.

Daarnaast biedt het ook ongelooflijke ondersteuning voor belangrijke Node.js-frameworks zoals Express, Adonis Js, Sails , Hapi en meer, zonder dat er codewijzigingen nodig zijn. PM2 wordt gebruikt door bedrijven zoals IBM, Microsoft, PayPal en meer.

In dit artikel leggen we uit hoe je PM2 installeert en gebruikt om Nodejs-apps uit te voeren op de Linux-productieserver. We zullen een app maken om enkele van de fundamentele functies van PM2 te demonstreren, zodat u ermee aan de slag kunt.

Stap 1: Installeer Nodejs en NPM in Linux

1. Om de meest recente versie van Node.js en NPM te installeren, moet u eerst de officiële NodeSource-repository onder uw Linux-distributie inschakelen en vervolgens installeren Node.js- en NPM-pakketten zoals weergegeven.

Op 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

Op CentOS/RHEL en 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 -

Stap 2: Maak een Nodejs-applicatie

2. Laten we nu een testapplicatie maken (we gaan ervan uit dat deze een client- en beheerderskant heeft die dezelfde database delen), de microservices zullen draaien op poorten 3000, en 3001 respectievelijk.

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

Kopieer en plak vervolgens de volgende stukjes code in de server.js-bestanden (vervang 192.168.43.31 door uw server-IP).

##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}/`);
});

Sla het bestand op en sluit af.

Stap 3: Installeer PM2 Product Process Manager onder Linux

3. De nieuwste stabiele versie van PM2 kan worden geïnstalleerd via NPM, zoals weergegeven.

sudo npm i -g pm2 

4. Zodra PM2 is geïnstalleerd, kunt u uw knooppunttoepassingen starten met de volgende opdrachten.

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

Houd er rekening mee dat u ze in een productieomgeving moet starten met PM2, zoals weergegeven (u heeft mogelijk geen sudo-opdracht nodig als uw app is opgeslagen op een locatie waar een normale gebruiker lees- en schrijfrechten heeft).

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

Stap 4: PM2 gebruiken en beheren onder Linux

5. Om een applicatie in clustermodus te starten met de vlag -i om bijvoorbeeld het aantal instanties op te geven.

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

6. Voer de volgende opdracht uit om al uw knooppuntapplicaties (process/microservices) weer te geven.

sudo pm2 list

7. Om logbestanden en aangepaste statistieken te monitoren, kunt u informatie uit alle processen verwerken door de volgende opdracht uit te voeren.

sudo pm2 monit

8. Om details van een enkel knooppuntproces te bekijken, zoals weergegeven, met behulp van de proces-ID of -naam.

sudo pm2 show 0

Stap 5: Node-apps beheren met PM2 in Linux

9. Het volgende is een lijst met enkele algemene procesbeheeropdrachten (enkelvoudig of alle) waar u rekening mee moet houden.

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. Gebruik de volgende opdrachten om applicatielogboeken te beheren.

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. Gebruik de volgende opdrachten om het PM2-proces te beheren.

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

Stap 6: Toegang tot knooppuntapps vanuit de webbrowser

12. Om toegang te krijgen tot al uw knooppuntapplicaties vanuit een externe webbrowser, moet u eerst de volgende poorten op uw systeemfirewall openen, om clientverbindingen met de apps mogelijk te maken, zoals weergegeven.

-------- 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. Open vervolgens uw apps via een webbrowser met deze URL's:

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

Last but not least is PM2 een eenvoudig, ingebouwd modulesysteem om de kernmogelijkheden uit te breiden. Sommige modules omvatten pm2-logrotate, pm2-webshell, pm2-server-monit en meer – u kunt ook uw eigen modules maken en gebruiken.

Ga voor meer informatie naar de PM2 GitHub-repository: https://github.com/Unitech/PM2/.

Dat is alles! PM2 is een geavanceerde en efficiënte procesmanager op productieniveau voor Node.js met een ingebouwde load balancer. In dit artikel hebben we laten zien hoe je PM2 installeert en gebruikt om Nodejs-apps in Linux te beheren. Als u vragen heeft, kunt u deze stellen via het onderstaande opmerkingenformulier.