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