Önüm serwerinde Node.js programmalaryny işletmek üçin PM2 nädip gurmaly


PM2, içerki ýük balanserli Node.js üçin mugt açyk çeşme, ösen, täsirli we platforma önümçilik derejeli iş dolandyryjysy. Linux, MacOS we Windows-da işleýär. Programma gözegçiligini, mikro-hyzmatlary/amallary netijeli dolandyrmagy, toparlary re modeimde işlemegi, programmalaryň ajaýyp başlamagyny we ýapylmagyny goldaýar.

Programmalaryňyzy awtomatiki täzeden başlamak bilen hemişelik diri saklaýar we ulgam ýüklemesinden başlap, ýokary elýeterlilik (HA) konfigurasiýalaryna ýa-da arhitekturasyna mümkinçilik döredýär.

2eri gelende aýtsak, PM2 kodlaryňyzy üýtgetmän programmalaryňyzy klaster re modeiminde işletmäge mümkinçilik berýär (bu hem serweriňizdäki CPU ýadrosynyň sanyna bagly). Şeýle hem, programma surnallaryny we başga-da köp zatlary aňsatlyk bilen dolandyrmaga mümkinçilik berýär.

Mundan başga-da, kod üýtgetmek zerurlygy bolmazdan, Express, Adonis Js, Sails, Hapi we başgalar ýaly esasy Node.js çarçuwalaryna ajaýyp goldaw bar. PM2 IBM, Microsoft, PayPal we başgalar ýaly kompaniýalar tarapyndan ulanylýar.

Bu makalada Linux önümçilik serwerinde Nodejs programmalaryny işletmek üçin PM2-ni nädip gurmalydygyny we ulanmalydygyny düşündireris. PM2-den başlamagyňyz üçin käbir esasy aýratynlyklary görkezmek üçin programma dörederis.

1-nji ädim: Linux-da Nodejs we NPM guruň

1. Node.js we NPM-iň iň soňky wersiýasyny gurmak üçin ilki bilen Linux paýlanyşyňyzda resmi NodeSource ammaryny açmaly, soňra görkezilişi ýaly Node.js we NPM paketlerini gurmaly.

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

2-nji ädim: “Nodejs” programmasyny dörediň

2. Indi, synag programmasyny döredeliň (şol bir maglumat bazasyny paýlaşýan müşderi we administrator tarapy bar öýdýäris), mikroservisler degişlilikde 3000 we 3001 portlarda işleýär.

$ 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

Ondan soň, aşakdaky kod böleklerini server.js faýllaryna göçüriň (192.168.43.31 serwer IP bilen çalşyň).

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

Faýly ýazdyryň we çykyň.

3-nji ädim: PM2-de Önüm prosesi dolandyryjysyny Linux-a guruň

3. PM2-iň iň soňky durnukly wersiýasy görkezilişi ýaly NPM arkaly gurmak üçin elýeterlidir.

$ sudo npm i -g pm2 

4. PM2 gurlansoň, aşakdaky buýruklary ulanyp düwün programmalaryňyzy başlap bilersiňiz.

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

Önümçilik gurşawynda görkezilişi ýaly PM2 ulanyp başlamalydygyňyzy unutmaň (programmaňyz adaty bir ulanyjynyň rugsatlaryny okan we ýazýan ýerinde saklansa sudo buýrugy gerek bolmaz).

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

4-nji ädim: Linux-da PM2-ni nädip ulanmaly we dolandyrmaly

5. Mysal üçin, mysallaryň sanyny kesgitlemek üçin -i baýdagyny ulanyp, klaster re modeiminde bir programma başlamak.

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

6. nodehli düwün programmaňyzy (amal/mikroservis) sanawlamak üçin aşakdaky buýrugy işlediň.

$ sudo pm2 list

7. surnallara, adaty ölçeglere gözegçilik etmek, aşakdaky buýrugy ýerine ýetirip, ähli amallardan maglumatlary işlemek.

$ sudo pm2 monit

8. Prosess ID-ni ýa-da adyny ulanyp, bir düwün prosesiniň jikme-jikliklerini görkezmek.

$ sudo pm2 show 0

5-nji ädim: Linux-da PM2 ulanyp düwün programmalaryny nädip dolandyrmaly

9. Aşakda üns bermeli käbir umumy prosesleriň (ýeke ýa-da hemmesi) dolandyryş buýruklarynyň sanawy.

$ 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. Programma gündeligini dolandyrmak üçin aşakdaky buýruklary ulanyň.

$ 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. PM2 amalyny dolandyrmak üçin aşakdaky buýruklary ulanyň.

$ 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-njy ädim: Web brauzerinden düwün programmalaryna giriň

12. Uzakdaky web brauzerinden ähli düwün programmaňyza girmek üçin ilki bilen ulgam gorag diwaryndaky aşakdaky portlary açmaly, müşderileriň görkezilişi ýaly programmalara birikmegine rugsat bermeli.

-------- 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. Soňra bu URL-ler bilen web brauzerinden programmalaryňyza giriň:

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

Iň soňkusy, PM2 esasy mümkinçiliklerini giňeltmek üçin ýönekeý, gurlan modul ulgamy, käbir modullarda pm2-logrotate, pm2-webshell, pm2-server-monit we başgalar bar - siz hem döredip we ulanyp bilersiňiz öz modullary.

Has giňişleýin maglumat üçin PM2 GitHub ammaryna gidiň: https://github.com/Unitech/PM2/.

Bu hemmesi! PM2, içerki ýük balanserli Node.js üçin ösen we täsirli önümçilik derejesindäki iş dolandyryjysydyr. Bu makalada Linux-daky Nodejs programmalaryny dolandyrmak üçin PM2-ni nädip gurmalydygyny we ulanmalydygyny görkezdik. Soraglaryňyz bar bolsa, aşakdaky düşündiriş formunyň üsti bilen ulanmaga iberiň.