จัดการ Node.js Projects ด้วย pm2

Web Development 21 กรกฎาคม พ.ศ. 2566 1,190
Home / Articles / 57

สวัสดีครับ ในบทความนี้ผมจะมาแนะนำเครื่องมือตัวหนึ่งที่ชื่อ PM2 ใช้สำหรับจัดการ Node.js Projects หลายๆอันของเรา ได้ง่ายๆ และสามารถเก็บ log ไปยัง file ได้ สามารถ Monitoring ทรัพยากรที่ใช้ได้ สามารถนำมาทำ Cluster Mode ได้ แถม pm2 ยังสามารถติดตั้ง modules ต่างๆ เพิ่มเติมเข้ามาได้ด้วย

การติดตั้ง PM2

สำหรับการติดตั้ง PM2 เราจะติดตั้งผ่าน npm ใช้คำสั่งตั้งนี้

npm install pm2@latest -g

การใช้งาน PM2

หากเราต้องการจะเพิ่ม Node.js Project เข้าไปใน PM2 โดยไม่เก็บ log เราจะใช้คำสั่ง

ตัวอย่าง Node Project จะอยู่ที่ /Node/app.js และจะตั้งชื่อว่า project01

pm2 start /Node/app.js -n project01

หากต้องการเก็บ log เป็นไฟล์ด้วย เราจะเพิ่ม project โดยเพิ่ม -l พร้อมที่อยู่ของไฟล์ log ที่เราต้องการให้มันสร้าง

pm2 start /Node/app.js -n project01 -l /Node/log/access.log

จากนั้น หากเราต้องการแสดง Projects ทั้งหมดใน PM2 เราจะใช้คำสั่ง

pm2 list

เราก็จะได้รายการออกมาประมาณนี้ ซึ่งจะประกอบไปด้วย id และ name ที่เราจะสามารถนำไปอ้างอิงเพื่อดำเนินการต่างๆ ได้

pm2 list

การดำเนินการต่างๆ เช่นการ Delete, Restart, Stop หรือ Reload เราก็จะใส่คำสั่ง ตามด้วย name หรือ id ของ project

pm2 delete project01
pm2 restart project01
pm2 stop project01
pm2 reload project01

หากต้องการแสดง logs ของทุก projects เราจะใช้คำสั่ง

pm2 logs

หรือแสดง log ของ project ใด project หนึ่งเท่านั้น จะใส่ name หรือ id ตามหลังคำสั่ง pm2 log ดังนี้

pm2 log project01

หากต้องการ Update PM2 เป็นเวอร์ชั่นล่าสุด เราจะใช้คำสั่ง

pm2 update

การใช้คำสั่ง pm2 save

กรณีที่เรา Shutdown Computer ของเรา และ PM2 ถูกปิดไป เป็นธรรมดาที่ Projects ต่างๆ ที่เราสร้างจะหายไป เราสามารถแก้ปัญหานี้ได้โดยการ save รายการต่างๆ ไว้ก่อน ใช้คำสั่ง

pm2 save

เพื่อบันทึกรายการ Projects ที่มีอยู่ใน PM2 จากนั้นหาก Shutdown Computer และเปิด pm2 ขึ้นมาใหม่อีกครั้ง รายการจะยังหายไปเหมือนเดิม แต่คราวนี้เราสามารถใช้คำสั่งให้มันเรียกคืนรายการที่ได้ save ไว้ได้ โดยใช้คำสั่ง

pm2 resurrect

เพียงเท่านี้เราก็จะสามารถกู้รายการให้กลับคืนมาได้ และหากต้องการให้ pm2 เริ่มทำงานทุกครั้งเมื่อเปิดเครื่อง โดยที่เราไม่ต้องมา resurrect ทุกครั้ง เราจะใช้คำสั่ง

pm2 startup

อ้างอิง: pm2.keymetrics.io

Profile Picture.
  • Name (Pen name): Sunny Jirakit (Sunny420x)
  • Study: Bachelor Degree of Computer Science from Chiang Mai Rajabhat University
  • Personality: Architect (INTJ-T)
  • Experience: JavaScript,  Angular.js, React.js, Next.js  Express.js, Unity C#, Socket.io