Sådan installeres PM2 til at køre Node.js-apps på produktionsserveren


PM2 er en gratis open source, avanceret, effektiv og cross-platform produktionsmanager på procesniveau til Node.js med en indbygget load balancer. Det fungerer på Linux, MacOS såvel som Windows. Det understøtter appovervågning, effektiv styring af mikrotjenester/processer, kørsel af apps i klyngetilstand, yndefuld start og lukning af apps.

Det holder dine apps "i live for evigt" med automatisk genstart og kan aktiveres til at starte ved systemstart, hvilket giver mulighed for høj tilgængelighed (HA) -konfigurationer eller -arkitekturer.

Især giver PM2 dig mulighed for at køre dine apps i klyngetilstand uden at foretage ændringer i din kode (dette afhænger også af antallet af CPU-kerner på din server). Det giver dig også mulighed for nemt at administrere applogfiler og meget mere.

Derudover har den også utrolig understøttelse af større Node.js-rammer som Express, Adonis Js, Sails, Hapi og mere uden behov for kodeændringer. PM2 bruges af virksomheder som IBM, Microsoft, PayPal og mere.

I denne artikel vil vi forklare, hvordan du installerer og bruger PM2 til at køre Nodejs-apps i Linux-produktionsserver. Vi opretter en app til at demonstrere nogle af PM2s grundlæggende funktioner, så du kan komme i gang med det.

Trin 1: Installer Nodejs og NPM i Linux

1. For at installere den nyeste version af Node.js og NPM skal du først aktivere det officielle NodeSource-lager under din Linux-distribution og derefter installere Node.js- og NPM-pakker som vist.

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

Trin 2: Opret en Nodejs-applikation

2. Lad os nu oprette en testapplikation (vi antager, at den har en klient- og admin-side, der deler den samme database), og mikrotjenesterne kører på henholdsvis porte 3000 og 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

Kopier og indsæt derefter følgende stykker kode i server.js -filerne (udskift 192.168.43.31 med din 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}/`);
});

Gem filen og afslut.

Trin 3: Installer PM2 Product Process Manager i Linux

3. Den seneste stabile version af PM2 kan installeres via NPM som vist.

$ sudo npm i -g pm2 

4. Når PM2 er installeret, kan du starte dine node-applikationer ved hjælp af følgende kommandoer.

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

Bemærk, at i et produktionsmiljø skal du starte dem ved hjælp af PM2 som vist (du har muligvis ikke brug for sudo-kommando, hvis din app er gemt et sted, hvor en normal bruger har læse- og skrivetilladelser).

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

Trin 4: Sådan bruges og styres PM2 i Linux

5. For at starte en applikation i klyngetilstand ved hjælp af -i -fanen for f.eks. At specificere antallet af forekomster.

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

6. Kør følgende kommando for at få vist alle dine knudeprogrammer (proces/mikroservices).

$ sudo pm2 list

7. For at overvåge logfiler, brugerdefinerede metrics, behandle oplysninger fra alle processer ved at køre følgende kommando.

$ sudo pm2 monit

8. For at se detaljer om en enkelt Node-proces som vist ved hjælp af proces-id eller navn.

$ sudo pm2 show 0

Trin 5: Sådan styres node-apps ved hjælp af PM2 i Linux

9. Følgende er en liste over nogle almindelige proceskommandoer (enkelt eller alle) ledelseskommandoer, du skal være opmærksom på.

$ 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. Brug følgende kommandoer til at administrere applikationslogfiler.

$ 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. Brug følgende kommandoer til at styre PM2-processen.

$ 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

Trin 6: Adgang til Node-apps fra webbrowser

12. For at få adgang til al din node-applikation fra en fjernwebbrowser skal du først åbne følgende porte på systemets firewall for at tillade klientforbindelser til apps som vist.

-------- 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. Gå derefter til dine apps fra en webbrowser med disse URL'er:

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

Sidst men ikke mindst er PM2 et simpelt, indbygget modulsystem, der udvider sine kernefunktioner, nogle af modulerne inkluderer pm2-logrotate, pm2-webshell, pm2-server-monit og mere - du kan også oprette og bruge din egne moduler.

For mere information, gå til PM2 GitHub-arkivet: https://github.com/Unitech/PM2/.

Det er alt! PM2 er en avanceret og effektiv procesmanager på produktionsniveau til Node.js med en indbygget load balancer. I denne artikel viste vi, hvordan du installerer og bruger PM2 til at styre Nodejs-apps i Linux. Hvis du har spørgsmål, skal du sende dem til brug via kommentarformularen nedenfor.