Wéi installéiere ech PM2 fir Node.js Apps op Produktiounsserver ze lafen


PM2 ass e gratis Open Source, fortgeschratt, effizient a Cross-Plattform Produktiounsniveau Prozessmanager fir Node.js mat engem agebaute Lastbalancer. Et funktionnéiert op Linux, MacOS souwéi Windows. Et ënnerstëtzt App Iwwerwaachung, effizient Gestioun vu Mikroservicer/Prozesser, Lafen Apps am Cluster Modus, graziéis Start an Ausschaltung vun Apps.

Et hält Är Apps fir ëmmer lieweg mam Auto Neistart a kann aktivéiert ginn fir beim Systemboot ze starten, sou datt High Availability (HA) Konfiguratiounen oder Architekturen erlaabt.

Notamment, PM2 erlaabt Iech Är Apps am Clustermodus ze lafen ouni Ännerungen an Ärem Code ze maachen (dëst hänkt och vun der Unzuel vun den CPU-Cores op Ärem Server of). Et erlaabt Iech och einfach App Logbicher ze managen, a sou vill méi.

Zousätzlech huet et och eng onheemlech Ënnerstëtzung fir grouss Node.js Kaderen wéi Express, Adonis Js, Sails, Hapi a méi, ouni Code Ännerungen. PM2 gëtt vu Firmen wéi IBM, Microsoft, PayPal, a méi benotzt.

An dësem Artikel wäerte mir erkläre wéi Dir PM2 installéiere a benotzt fir Nodejs Apps am Linux Produktiounsserver ze lafen. Mir erstellen eng App fir e puer vun de fundamentale Fonctiounen vun PM2 ze demonstréieren fir Iech domat unzefänken.

Schrëtt 1: Nodejs an NPM op Linux installéieren

1. Fir déi lescht Versioun vun Node.js an NPM z'installéieren, musst Dir als éischt offiziell NodeSource Repository ënner Ärer Linux Verdeelung aktivéieren an dann Node.js an NPM Packagen installéieren wéi gewisen.

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

Schrëtt 2: Erstellt eng Nodejs Applikatioun

2. Loosst eis elo eng Testapplikatioun erstellen (mir huelen un datt et e Client an Administrator Säit huet déi déiselwecht Datebank deelen), d'Mikroservicer lafen op Ports 3000, respektiv 3001.

$ 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

Als nächst kopéiert a paste déi folgend Coden an de server.js Dateien (ersetzen 192.168.43.31 mat Ärem 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}/`);
});

Späichert d'Datei a gitt eraus.

Schrëtt 3: Installéiert PM2 Product Process Manager op Linux

3. Déi lescht stabil Versioun vu PM2 ass verfügbar fir iwwer NPM z'installéieren wéi gewisen.

$ sudo npm i -g pm2 

4. Eemol PM2 installéiert, kënnt Dir Är Node Uwendungen mat folgenden Kommando ufänken.

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

Bedenkt datt, an engem Produktiounsëmfeld, Dir sollt se mat PM2 ufänken, wéi gewisen (Dir braucht vläicht kee Sudo Kommando wann Är App op enger Plaz gespäichert ass wou en normale Benotzer Lies- a Schreifrechter huet).

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

Schrëtt 4: Wéi benotzen a verwalten PM2 op Linux

5. Fir eng Applikatioun am Clustermodus ze starten andeems Dir de -i Fändel benotzt fir d'Zuel vun Instanzen ze spezifizéieren, zum Beispill.

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

6. Fir eng Lëscht vun all Är Node Applikatioun (Prozess/Mikroservicer), lafen de folgende Kommando.

$ sudo pm2 list

7. Fir Logbicher ze iwwerwaachen, personaliséiert Metriken, Prozessinformatioun vun all Prozesser andeems Dir de folgende Kommando ausféiert.

$ sudo pm2 monit

8. Fir e Bléck Detailer vun engem eenzege Node Prozess wéi gewisen, de Prozess ID oder Numm benotzt.

$ sudo pm2 show 0

Schrëtt 5: Wéi verwalten Node Apps mat PM2 a Linux

9. Déi folgend ass eng Lëscht vun e puer gemeinsam Prozess (eenzel oder all) Gestioun commandéiert Dir Note vun huelen soll.

$ 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. Fir Applikatioun Logbicher ze verwalten, benotzt déi folgend Kommandoen.

$ 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. Fir de PM2 Prozess ze verwalten, benotzt déi folgend Kommandoen.

$ 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

Schrëtt 6: Zougang Node Apps Vum Webbrowser

12. Fir Zougang zu all Är Node Applikatioun vun engem Remote Webbrowser ze kréien, musst Dir als éischt folgend Ports op Ärem System Firewall opmaachen, fir Clientverbindunge mat den Apps z'erméiglechen wéi gewisen.

-------- 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. Da gitt Zougang zu Ären Apps aus engem Webbrowser mat dësen URLen:

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

Lescht awer net zulescht, PM2 ass en einfachen, agebaute Modulsystem fir seng Kärfäegkeeten ze verlängeren, e puer vun de Moduler enthalen pm2-logrotate, pm2-webshell, pm2-server-monit, a méi - Dir kënnt och Äert erstellen a benotzen eegene Moduler.

Fir méi Informatioun, gitt op de PM2 GitHub Repository: https://github.com/Unitech/PM2/.

Dat ass alles! PM2 ass en fortgeschrattenen an effiziente Produktiounsniveau Prozessmanager fir Node.js mat engem agebaute Lastbalancer. An dësem Artikel hu mir gewisen wéi Dir PM2 installéiere a benotzt fir Nodejs Apps am Linux ze managen. Wann Dir Froen hutt, schéckt se fir iwwer de Kommentarform hei ënnen ze benotzen.