Bii o ṣe le Fi PM2 sori ẹrọ lati Ṣiṣe Awọn ohun elo Node.js lori Server Production


PM2 jẹ orisun ṣiṣi ọfẹ kan, ilọsiwaju, ṣiṣe daradara ati oluṣakoso ilana ipele agbejade-pẹpẹ fun Node.js pẹlu iwọntunwọnsi fifuye ti a ṣe sinu rẹ. O ṣiṣẹ lori Lainos, MacOS bii Windows. O ṣe atilẹyin ibojuwo ohun elo, iṣakoso daradara ti awọn iṣẹ-airi/awọn ilana, ṣiṣe awọn ohun elo ni ipo iṣupọ, ibẹrẹ oore-ọfẹ ati tiipa ti awọn lw.

O tọju awọn ohun elo rẹ\"laaye lailai" pẹlu awọn atunbere laifọwọyi ati pe o le muu ṣiṣẹ lati bẹrẹ ni bata eto, nitorinaa gbigba fun awọn atunto Wiwa Ga (HA) tabi awọn ayaworan ile.

Paapa, PM2 gba ọ laaye lati ṣiṣẹ awọn ohun elo rẹ ni ipo iṣupọ laisi ṣiṣe awọn ayipada ninu koodu rẹ (eyi tun da lori nọmba awọn ohun kohun CPU lori olupin rẹ). O tun n gba ọ laaye lati ṣakoso awọn iṣọrọ awọn iwe ohun elo ni irọrun, ati pupọ diẹ sii.

Ni afikun, o tun ni atilẹyin alaragbayida fun awọn ilana Node.js pataki bii Express, Adonis Js, Sails, Hapi ati diẹ sii, laisi iwulo fun awọn ayipada koodu eyikeyi. PM2 n lo nipasẹ awọn ile-iṣẹ bii IBM, Microsoft, PayPal, ati diẹ sii.

Ninu nkan yii, a yoo ṣalaye bi o ṣe le fi sori ẹrọ ati lo PM2 lati ṣiṣe awọn ohun elo Nodejs ni olupin iṣelọpọ Linux. A yoo ṣẹda ohun elo kan fun iṣafihan diẹ ninu awọn ẹya ipilẹ PM2 fun ọ lati bẹrẹ pẹlu rẹ.

Igbesẹ 1: Fi Nodejs ati NPM sori Linux

1. Lati fi ẹya ti o ṣẹṣẹ julọ ti Node.js ati NPM sori ẹrọ, akọkọ o nilo lati mu ibi ipamọ NodeSource osise ṣiṣẹ labẹ pinpin Linux rẹ ati lẹhinna fi awọn idii Node.js ati NPM sii bi o ti han.

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

Igbesẹ 2: Ṣẹda Ohun elo Nodejs kan

2. Bayi, jẹ ki a ṣẹda ohun elo idanwo kan (a yoo ro pe o ni alabara ati ẹgbẹ abojuto eyiti o pin data kanna), awọn microservices yoo ṣiṣẹ lori awọn ibudo 3000, ati 3001 lẹsẹsẹ.

$ 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

Nigbamii, daakọ ati lẹẹ mọ awọn ege koodu wọnyi ni awọn faili server.js (rọpo 192.168.43.31 pẹlu IP olupin rẹ).

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

Fipamọ faili naa ki o jade.

Igbesẹ 3: Fi Oluṣakoso ilana Ọja PM2 sii ni Lainos

3. Ẹya iduroṣinṣin tuntun ti PM2 wa lati fi sori ẹrọ nipasẹ NPM bi o ti han.

$ sudo npm i -g pm2 

4. Lọgan ti PM2 ti fi sori ẹrọ, o le bẹrẹ awọn ohun elo ipade rẹ nipa lilo awọn ofin atẹle.

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

Akiyesi pe, ni agbegbe iṣelọpọ, o yẹ ki o bẹrẹ wọn ni lilo PM2, bi o ṣe han (o le ma nilo aṣẹ sudo ti o ba fi ohun elo rẹ pamọ si ipo kan nibiti olumulo deede ti ka ati kọ awọn igbanilaaye).

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

Igbesẹ 4: Bii o ṣe le Lo ati Ṣakoso PM2 ni Lainos

5. Lati bẹrẹ ohun elo ni ipo iṣupọ pẹlu lilo asia -i lati ṣafihan nọmba awọn iṣẹlẹ, fun apẹẹrẹ.

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

6. Lati ṣe atokọ gbogbo ohun elo ipade rẹ (ilana/microservices), ṣiṣe aṣẹ atẹle.

$ sudo pm2 list

7. Lati ṣe atẹle awọn iwe akọọlẹ, awọn iṣiro aṣa, alaye ilana lati gbogbo awọn ilana nipa ṣiṣe pipaṣẹ atẹle.

$ sudo pm2 monit

8. Lati wo awọn alaye ti ilana Node kan bi o ṣe han, ni lilo ID ilana tabi orukọ.

$ sudo pm2 show 0

Igbesẹ 5: Bii o ṣe le Ṣakoso awọn Awọn ohun elo Node Lilo PM2 ni Linux

9. Atẹle yii ni atokọ ti diẹ ninu ilana ti o wọpọ (ẹyọkan tabi gbogbo) awọn aṣẹ iṣakoso ti o yẹ ki o ṣe akiyesi.

$ 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. Lati ṣakoso awọn iwe ohun elo, lo awọn ofin wọnyi.

$ 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. Lati ṣakoso ilana PM2, lo awọn ofin wọnyi.

$ 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

Igbesẹ 6: Wiwọle Awọn ohun elo Node Lati Ẹrọ lilọ kiri lori Ayelujara

12. Lati wọle si gbogbo ohun elo oju ipade rẹ lati ẹrọ lilọ kiri lori wẹẹbu latọna jijin, akọkọ o nilo lati ṣii awọn ibudo wọnyi lori ogiriina eto rẹ, lati gba awọn asopọ alabara si awọn lw bi a ti han.

-------- 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. Lẹhinna wọle si awọn ohun elo rẹ lati ẹrọ aṣawakiri wẹẹbu pẹlu awọn URL wọnyi:

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

Ni ikẹhin ṣugbọn ko kere ju, PM2 jẹ ọna ṣiṣe ti o rọrun, ti a ṣe sinu lati faagun awọn agbara akọkọ rẹ, diẹ ninu awọn modulu naa pẹlu pm2-logrotate, pm2-webshell, pm2-server-monit, ati diẹ sii - o tun le ṣẹda ati lo rẹ ara modulu.

Fun alaye diẹ sii, lọ si ibi ipamọ PM2 GitHub: https://github.com/Unitech/PM2/.

Gbogbo ẹ niyẹn! PM2 jẹ ilọsiwaju, ati oluṣakoso ilana ipele iṣelọpọ daradara fun Node.js pẹlu iwọntunwọnsi fifuye ti a ṣe sinu rẹ. Ninu nkan yii, a fihan bi a ṣe le fi sori ẹrọ ati lo PM2 lati ṣakoso awọn ohun elo Nodejs ni Lainos. Ti o ba ni awọn ibeere eyikeyi, firanṣẹ wọn lati lo nipasẹ fọọmu asọye ni isalẹ.