ค้นหาเว็บไซต์

วิธีติดตั้ง PM2 เพื่อรันแอพ Node.js บนเซิร์ฟเวอร์ที่ใช้งานจริง


PM2 คือตัวจัดการกระบวนการระดับการผลิตข้ามแพลตฟอร์มแบบโอเพนซอร์สขั้นสูงที่มีประสิทธิภาพและข้ามแพลตฟอร์มสำหรับ Node.js พร้อมด้วยตัวจัดสรรภาระงานในตัว มันทำงานบน Linux, MacOS และ Windows รองรับการตรวจสอบแอป การจัดการไมโครบริการ/กระบวนการอย่างมีประสิทธิภาพ การเรียกใช้แอปในโหมดคลัสเตอร์ การเริ่มต้นและการปิดแอปอย่างราบรื่น

ช่วยให้แอปของคุณ “คงอยู่ตลอดไป ” ด้วยการรีสตาร์ทอัตโนมัติและสามารถเปิดใช้งานเพื่อเริ่มต้นเมื่อบูตระบบได้ จึงทำให้มีความพร้อมใช้งานสูง (HA) การกำหนดค่าหรือสถาปัตยกรรม

โดยเฉพาะอย่างยิ่ง PM2 ช่วยให้คุณสามารถเรียกใช้แอปของคุณในโหมดคลัสเตอร์ โดยไม่ต้องทำการเปลี่ยนแปลงใดๆ ในโค้ดของคุณ (ซึ่งขึ้นอยู่กับจำนวนแกน CPU บนเซิร์ฟเวอร์ของคุณด้วย) นอกจากนี้ยังช่วยให้คุณจัดการบันทึกของแอปได้อย่างง่ายดาย และอื่นๆ อีกมากมาย

นอกจากนี้ ยังรองรับเฟรมเวิร์ก Node.js หลักอย่างเหลือเชื่อ เช่น Express, Adonis Js, Sails , Hapi และอื่นๆ โดยไม่จำเป็นต้องเปลี่ยนแปลงโค้ดใดๆ PM2 ถูกใช้โดยบริษัทต่างๆ เช่น IBM, Microsoft, PayPal และอื่นๆ

ในบทความนี้ เราจะอธิบายวิธีการติดตั้งและใช้ PM2 เพื่อเรียกใช้แอป Nodejs ในเซิร์ฟเวอร์ที่ใช้งานจริงของ Linux เราจะสร้างแอปเพื่อสาธิตคุณสมบัติพื้นฐานของ PM2 เพื่อให้คุณเริ่มต้นใช้งานได้

ขั้นตอนที่ 1: ติดตั้ง Nodejs และ NPM ใน Linux

1. หากต้องการติดตั้ง Node.js และ NPM เวอร์ชันล่าสุด ขั้นแรกคุณต้องเปิดใช้งานพื้นที่เก็บข้อมูล NodeSource อย่างเป็นทางการภายใต้การแจกจ่าย Linux ของคุณ จากนั้นจึงติดตั้ง แพ็คเกจ Node.js และ NPM ตามที่แสดง

บนเดเบียน/อูบุนตู

---------- 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 และ 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: สร้างแอปพลิเคชัน Nodejs

2. ตอนนี้ เรามาสร้างแอปพลิเคชันทดสอบกัน (เราจะถือว่าแอปพลิเคชันนั้นมีฝั่งไคลเอ็นต์และผู้ดูแลระบบซึ่งใช้ฐานข้อมูลเดียวกัน) ไมโครเซอร์วิสจะทำงานบนพอร์ต 3000 และ 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

จากนั้น คัดลอกและวางโค้ดต่อไปนี้ในไฟล์ server.js (แทนที่ 192.168.43.31 ด้วย 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}/`);
});

บันทึกไฟล์และออก

ขั้นตอนที่ 3: ติดตั้งตัวจัดการกระบวนการผลิตภัณฑ์ PM2 ใน Linux

3. PM2 เวอร์ชันเสถียรล่าสุดพร้อมให้ติดตั้งผ่าน NPM ดังที่แสดง

sudo npm i -g pm2 

4. เมื่อติดตั้ง PM2 แล้ว คุณสามารถเริ่มแอปพลิเคชันโหนดของคุณโดยใช้คำสั่งต่อไปนี้

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

โปรดทราบว่าในสภาพแวดล้อมการใช้งานจริง คุณควรเริ่มต้นโดยใช้ PM2 ดังที่แสดง (คุณอาจไม่จำเป็นต้องใช้คำสั่ง sudo หากแอปของคุณจัดเก็บไว้ในตำแหน่งที่ผู้ใช้ปกติมีสิทธิ์ในการอ่านและเขียน)

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

ขั้นตอนที่ 4: วิธีใช้และจัดการ PM2 ใน Linux

5. หากต้องการเริ่มต้นแอปพลิเคชันในโหมดคลัสเตอร์โดยใช้แฟล็ก -i เพื่อระบุจำนวนอินสแตนซ์ เป็นต้น

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

6. หากต้องการแสดงรายการแอปพลิเคชันโหนดทั้งหมดของคุณ (กระบวนการ/ไมโครเซอร์วิส) ให้รันคำสั่งต่อไปนี้

sudo pm2 list

7. ในการตรวจสอบบันทึก ตัวชี้วัดที่กำหนดเอง ประมวลผลข้อมูลจากกระบวนการทั้งหมดโดยการเรียกใช้คำสั่งต่อไปนี้

sudo pm2 monit

8. หากต้องการดูรายละเอียดของกระบวนการโหนดเดียวตามที่แสดง โดยใช้รหัสกระบวนการหรือชื่อ

sudo pm2 show 0

ขั้นตอนที่ 5: วิธีจัดการแอปโหนดโดยใช้ PM2 ใน Linux

9. ต่อไปนี้เป็นรายการคำสั่งการจัดการกระบวนการทั่วไป (เดี่ยวหรือทั้งหมด) ที่คุณควรจดจำ

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. ในการจัดการบันทึกแอปพลิเคชัน ให้ใช้คำสั่งต่อไปนี้

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 ให้ใช้คำสั่งต่อไปนี้

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: เข้าถึงแอปโหนดจากเว็บเบราว์เซอร์

12. หากต้องการเข้าถึงแอปพลิเคชันโหนดทั้งหมดของคุณจากเว็บเบราว์เซอร์ระยะไกล ขั้นแรกคุณต้องเปิดพอร์ตต่อไปนี้บนไฟร์วอลล์ระบบของคุณ เพื่ออนุญาตการเชื่อมต่อไคลเอ็นต์กับแอปดังที่แสดง

-------- 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. จากนั้นเข้าถึงแอปของคุณจากเว็บเบราว์เซอร์ด้วย URL เหล่านี้:

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

สุดท้ายแต่ไม่ท้ายสุด PM2 เป็นระบบโมดูลที่สร้างขึ้นมาอย่างเรียบง่ายเพื่อขยายขีดความสามารถหลัก โมดูลบางโมดูลประกอบด้วย pm2-logrotate, pm2-webshell, pm2-server-monit และอื่นๆ อีกมากมาย คุณสามารถสร้างและใช้โมดูลของคุณเองได้

สำหรับข้อมูลเพิ่มเติม ไปที่พื้นที่เก็บข้อมูล PM2 GitHub: https://github.com/Unitech/PM2/

นั่นคือทั้งหมด! PM2 คือผู้จัดการกระบวนการระดับการผลิตขั้นสูงและมีประสิทธิภาพสำหรับ Node.js พร้อมด้วยตัวจัดสรรภาระงานในตัว ในบทความนี้ เราได้แสดงวิธีการติดตั้งและใช้ PM2 เพื่อจัดการแอป Nodejs ใน Linux หากคุณมีข้อสงสัยใด ๆ ส่งมาเพื่อใช้ผ่านแบบฟอร์มความคิดเห็นด้านล่าง