Giunsa ang Pag-install sa PM2 aron Pagdagan ang Node.js Apps sa Production Server


Ang PM2 usa ka libre nga open source, advanced, episyente ug cross-platform production-level process manager para sa Node.js nga adunay built-in nga load balancer. Naglihok kini sa Linux, MacOS ingon man sa Windows. Gisuportahan niini ang pag-monitor sa app, episyente nga pagdumala sa mga micro-service/proseso, pagpadagan sa mga app sa cluster mode, maayong pagsugod ug pagsira sa mga app.

Gipadayon niini ang imong mga app nga \buhi hangtod sa kahangturan nga adunay mga awtomatikong pag-restart ug mahimo’g magamit sa pagsugod sa boot sa system, sa ingon gitugotan ang mga pag-configure o arkitektura nga High Availability (HA).

Ilabi na, ang PM2 nagtugot kanimo sa pagpadagan sa imong mga app sa cluster mode nga walay pagbag-o sa imong code (kini nagdepende usab sa gidaghanon sa mga CPU core sa imong server). Gitugotan ka usab nga dali nga madumala ang mga log sa app, ug daghan pa.

Dugang pa, kini usab adunay talagsaon nga suporta alang sa mga mayor nga Node.js frameworks sama sa Express, Adonis Js, Sails, Hapi ug uban pa, nga wala magkinahanglan og bisan unsang mga pagbag-o sa code. Ang PM2 gigamit sa mga kompanya sama sa IBM, Microsoft, PayPal, ug uban pa.

Niini nga artikulo, among ipasabut kung giunsa ang pag-install ug paggamit sa PM2 aron makadagan ang Nodejs apps sa server sa produksiyon sa Linux. Maghimo kami usa ka app alang sa pagpakita sa pipila sa mga sukaranan nga bahin sa PM2 aron makasugod ka niini.

Lakang 1: I-install ang Nodejs ug NPM sa Linux

1. Aron ma-install ang pinakabag-o nga bersyon sa Node.js ug NPM, una kinahanglan nimo nga i-enable ang opisyal nga NodeSource repository ubos sa imong distribusyon sa Linux ug dayon i-install ang Node.js ug NPM nga mga pakete sama sa gipakita.

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

Lakang 2: Paghimo og Nodejs Application

2. Karon, maghimo ta ug testing application (atong isipon nga kini adunay kliyente ug admin nga bahin nga nag-ambit sa samang database), ang microservices modagan sa ports 3000, ug 3001 matag usa.

$ 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

Sunod, kopyaha ug idikit ang mosunod nga mga piraso sa code sa server.js files (ilisan ang 192.168.43.31 sa imong 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}/`);
});

I-save ang file ug paggawas.

Lakang 3: I-install ang PM2 Product Process Manager sa Linux

3. Ang pinakabag-o nga stable nga bersyon sa PM2 anaa aron ma-install pinaagi sa NPM sama sa gipakita.

$ sudo npm i -g pm2 

4. Sa higayon nga ma-install ang PM2, mahimo nimong sugdan ang imong mga aplikasyon sa node gamit ang mosunod nga mga sugo.

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

Timan-i nga, sa usa ka palibot sa produksiyon, kinahanglan nimo nga sugdan kini gamit ang PM2, ingon sa gipakita (tingali dili nimo kinahanglan ang sudo command kung ang imong app gitipigan sa usa ka lokasyon diin ang usa ka normal nga tiggamit adunay mga permiso sa pagbasa ug pagsulat).

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

Lakang 4: Giunsa Paggamit ug Pagdumala ang PM2 sa Linux

5. Sa pagsugod sa usa ka aplikasyon sa cluster mode gamit ang -i nga bandila aron matino ang gidaghanon sa mga higayon, pananglitan.

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

6. Aron ilista ang tanan nimong aplikasyon sa node (proseso/microservices), padagana ang mosunod nga sugo.

$ sudo pm2 list

7. Para mamonitor ang mga log, custom metrics, proseso sa impormasyon gikan sa tanang proseso pinaagi sa pagpadagan sa mosunod nga command.

$ sudo pm2 monit

8. Aron tan-awon ang mga detalye sa usa ka proseso sa Node sama sa gipakita, gamit ang process ID o ngalan.

$ sudo pm2 show 0

Lakang 5: Giunsa Pagdumala ang Node Apps Gamit ang PM2 sa Linux

9. Ang mosunod usa ka lista sa pipila ka kasagarang proseso (usa o tanan) nga mga mando sa pagdumala nga kinahanglan nimong tagdon.

$ 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. Aron pagdumala sa mga log sa aplikasyon, gamita ang mosunod nga mga sugo.

$ 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. Aron madumala ang proseso sa PM2, gamita ang mosunod nga mga sugo.

$ 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

Lakang 6: Pag-access sa Node Apps Gikan sa Web Browser

12. Aron ma-access ang tanan nimo nga aplikasyon sa node gikan sa usa ka hilit nga web browser, una kinahanglan nimo nga ablihan ang mga nagsunod nga mga pantalan sa imong firewall sa system, aron tugutan ang mga koneksyon sa kliyente sa mga app sama sa gipakita.

-------- 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. Dayon i-access ang imong mga app gikan sa usa ka web browser uban niining mga URL:

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

Katapusan apan dili labing gamay, ang PM2 usa ka yano, in-built module system aron mapalapdan ang mga kinauyokan nga kapabilidad niini, pipila sa mga module naglakip sa pm2-logrotate, pm2-webshell, pm2-server-monit, ug uban pa - mahimo ka usab nga maghimo ug magamit ang imong kaugalingon nga modules.

Para sa dugang nga impormasyon, adto sa PM2 GitHub repository: https://github.com/Unitech/PM2/.

Kana lang! Ang PM2 usa ka advanced, ug episyente nga production-level process manager para sa Node.js nga adunay built-in nga load balancer. Sa kini nga artikulo, gipakita namon kung giunsa ang pag-install ug paggamit sa PM2 aron madumala ang Nodejs apps sa Linux. Kung naa kay pangutana, ipadala sila para magamit pinaagi sa comment form sa ubos.