Kaip įdiegti PM2, kad gamybos serveryje būtų paleistos Node.js programos


PM2 yra nemokama atvirojo kodo, pažangi, efektyvi ir kelių platformų gamybos lygio procesų tvarkyklė, skirta Node.js su įtaisytuoju apkrovos balansavimo įrenginiu. Jis veikia „Linux“, „MacOS“ ir „Windows“. Tai palaiko programų stebėjimą, efektyvų mikro paslaugų/procesų valdymą, programų paleidimą klasterio režimu, grakštų programų paleidimą ir išjungimą.

Tai išlaiko jūsų programas „gyvas amžinai“, kai jos automatiškai paleidžiamos iš naujo ir gali būti įgalintos, kad jos būtų paleistos sistemos įkrovos metu, taip užtikrinant didelį prieinamumą (HA) konfigūracijos ar architektūros.

Pažymėtina, kad PM2 leidžia paleisti programas grupės režimu neatliekant jokių kodo pakeitimų (tai taip pat priklauso nuo procesoriaus branduolių skaičiaus serveryje). Tai taip pat leidžia lengvai tvarkyti programų žurnalus ir dar daugiau.

Be to, jis taip pat neįtikėtinai palaiko pagrindines Node.js sistemas, tokias kaip Express, Adonis Js, Sails , Hapi ir kt., nereikia keisti kodo. PM2 naudoja tokios įmonės kaip IBM, Microsoft, PayPal ir kt.

Šiame straipsnyje paaiškinsime, kaip įdiegti ir naudoti PM2, kad paleistumėte Nodejs programas Linux gamybos serveryje. Sukursime programėlę, kuri parodys kai kurias pagrindines PM2 funkcijas, kad galėtumėte pradėti dirbti.

1 veiksmas: įdiekite „Nodejs“ ir „NPM“ sistemoje „Linux“.

1. Norėdami įdiegti naujausią Node.js ir NPM versiją, pirmiausia turite įgalinti oficialią „NodeSource“ saugyklą „Linux“ paskirstyme ir tada įdiegti Node.js ir NPM paketai, kaip parodyta.

„Debian“/„Ubuntu“.

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

„CentOS/RHEL“ ir „Fedora“.

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

2 veiksmas: sukurkite „Nodejs“ programą

2. Dabar sukurkime testavimo programą (manysime, kad joje yra kliento ir administratoriaus pusės, kurios turi tą pačią duomenų bazę), mikropaslaugos veiks 3000 prievaduose ir 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

Tada nukopijuokite ir įklijuokite toliau nurodytas kodo dalis į server.js failus (pakeiskite 192.168.43.31 savo serverio 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šsaugokite failą ir išeikite.

3 veiksmas: įdiekite „PM2 Product Process Manager“ sistemoje „Linux“.

3. Naujausią stabilią PM2 versiją galima įdiegti naudojant NPM, kaip parodyta.

sudo npm i -g pm2 

4. Įdiegę PM2, galite paleisti mazgo programas naudodami šias komandas.

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

Atminkite, kad gamybinėje aplinkoje turėtumėte juos paleisti naudodami PM2, kaip parodyta (jums gali nereikėti sudo komandos, jei jūsų programa saugoma vietoje, kur įprastas naudotojas turi skaitymo ir rašymo teises).

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

4 veiksmas: kaip naudoti ir valdyti PM2 sistemoje „Linux“.

5. Norėdami paleisti programą klasterio režimu, naudodami vėliavėlę -i, kad nurodytumėte, pavyzdžiui, atvejų skaičių.

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

6. Norėdami pateikti visų mazgo taikomųjų programų (procesų/mikropaslaugų) sąrašą, paleiskite šią komandą.

sudo pm2 list

7. Norėdami stebėti žurnalus, tinkintą metriką, apdorokite informaciją iš visų procesų vykdydami šią komandą.

sudo pm2 monit

8. Norėdami peržiūrėti išsamią vieno mazgo proceso informaciją, kaip parodyta, naudodami proceso ID arba pavadinimą.

sudo pm2 show 0

5 veiksmas: kaip valdyti mazgų programas naudojant PM2 sistemoje Linux

9. Toliau pateikiamas kai kurių įprastų procesų (vieno arba visų) valdymo komandų, į kurias turėtumėte atkreipti dėmesį, sąrašas.

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. Norėdami tvarkyti programų žurnalus, naudokite šias komandas.

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. Norėdami valdyti PM2 procesą, naudokite šias komandas.

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

6 veiksmas: pasiekite mazgo programas iš žiniatinklio naršyklės

12. Norėdami pasiekti visą mazgo programą iš nuotolinės žiniatinklio naršyklės, pirmiausia turite atidaryti šiuos sistemos ugniasienės prievadus, kad klientai galėtų prisijungti prie programų, kaip parodyta.

-------- 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. Tada pasiekite programas iš žiniatinklio naršyklės naudodami šiuos URL:

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

Paskutinis, bet ne mažiau svarbus dalykas yra tai, kad PM2 yra paprasta, įmontuota modulių sistema, skirta išplėsti pagrindines jos galimybes. Kai kurie moduliai apima pm2-logrotate, pm2-webshell, pm2-server-monit ir kt. taip pat galite kurti ir naudoti savo modulius.

Norėdami gauti daugiau informacijos, eikite į PM2 GitHub saugyklą: https://github.com/Unitech/PM2/.

Tai viskas! PM2 yra pažangi ir efektyvi gamybos lygio procesų tvarkyklė, skirta Node.js su įtaisytuoju apkrovos balansuotoju. Šiame straipsnyje mes parodėme, kaip įdiegti ir naudoti PM2, kad galėtumėte valdyti „Nodejs“ programas „Linux“. Jei turite klausimų, atsiųskite juos naudoti naudodami toliau pateiktą komentarų formą.