PM2 ตัวช่วยจัดการ Process และ Monitor Service Node.Js (Production Mode)

Krucamper
2 min readApr 19, 2020

กับสถานะการณ์ COVID-19 ในช่วงนี้ การทำงานแบบ WFH เป็นสิ่งที่หลีกเลี่ยงไม่ได้แต่ในความร้ายๆ ของเจ้าไวรัสนี้ ผมแอบเห็นความดีงามของการ WFH อยู่บ้าง
นั่นก็คือ ลดเวลาในการเดินทางไปทำงานได้พอสมควร ก็เลยเกิดเป็นไอเดียว่า ไหน ๆ ก็ได้เวลากลับคืนมาแล้ว หาอะไรมาแชร์ บ้างดีกว่าโดยเป็นเรื่องทั่วๆ ไปเนี่ยแหละ
ที่เราใช้ทำงานกันเป็นประจำกันอยู่แล้ว เกริ่นซะเยอะเลย เข้าเรื่องเลยล่ะกันครับ

PM2 Process Manager

pm2 คือ? ที่แน่ๆ อย่าเพิ่งคิดไปถึง pm2.5 อะไรนั่นนะครับ ไมได้เกี่ยวกันเลย

pm2 ในที่นี้คือ เครื่องมือที่ช่วยให้ process ที่เป็น nodejs ของเราเนี่ยทำงานได้ตลอดเวลานั่นเอง กรณีที่มีปัญหาอะไรก็แล้วแต่ pm2 ก็จะทำการ restart process ของเราให้โดยอัตโนมัติ นอกจากนี้ยังไม่พอ ยังมีหน้า dashboard แสดงรายละเอียดการทำงานของระบบ เพื่อง่ายต่อการ monitor process ของเราอีก โครตคลูพูดเลย

นอกจาก pm2 ยังมีตัว Service อื่นๆที่คล้ายๆกัน ให้เราเลือกใช้งานมากมายอย่างเช่น supervisor, forever หรือรุ่นพี่สุดฮอตอย่าง nodemon ลองศึกษาเพิ่มเติมกันได้

มาเริ่มต้นการใช้งานกันดีกว่า

จากภาพด้านบน ให้เราคลิ๊กไปที่ปุ่ม monitor pm2 ทางด้านขวามือ

หน้าตา Login สามารถสมัครใช้งานได้หลายช่องทาง

PM2 is a daemon process manager that will help you manage and keep your application online

จากนั้นก็ทำการสมัครสมาชิกกันให้เรียบร้อย

ภาพแสดงการสร้าง Buckets สำหรับเก็บ Process

กล่องนี้จะให้เราทำการตั้งชื่อ buckets สำหรับเก็บ process ที่เราจะทำกันสร้างภายในอนาคตอันใกล้ๆ นี้

ภาพแสดงการ Buckets สำหรับเก็บ Process

หลังจากสร้างเสร็จก็จะได้ buckets สำหรับใช้งาน โดยใน buckets version ฟรีเราสามารถสั่งรัน process ได้ 4 process เท่านั้นนะครับ

ภาพแสดงการเชื่อมต่อกับ service ในเครื่อง server ของเรา

หลังจากกดเข้ามาใช้ในงาน buckets จะมีหน้าแสดงวิธีการเชื่อมต่อ pm2 เข้ากับ server ของเรานะครับ

มาถึงตรงนี้สิ่งที่ขาดไม่ได้เลยนะครับคือ

  • nodejs (แนะนำเป็น version 12.16.2 เพราว่าเป็น lts )
  • npm ตัวนี้จะถูกติดแถมมาด้วยกับ nodejs ถ้าไม่มีก็ต้องติดตั้งเพิ่มเข้าไปด้วยครับ
  • nodejs แอพหรือโปรเจค โดยจะเขียนจาก framework ไหนก็ได้ที่เป็น nodejs สำหรับผมจะใช้ nestjs เป็น framework ในการทำงาน

มาต่อกันครับหลังจากนั้นก็ login เข้า server แล้วก็ติดตั้งคำสั่ง

# คำสั่งสำหรับติดตั้ง pm2 service
npm install -g pm2
# คำสั่งสำหรับ link dashboard service เข้ากับ server ของเรา
pm2 link 84652kcp1l8loy g7vkcpisi8kcpml

จากนั้นก็เข้าไปใน directory ที่ต้องการรัน process ตามด้วยคำสั่งด้านล่าง

# คำสั่งสำหรับรัน process แทนชื่อของ process ในคำสั่ง "process_name"
pm2 start --name process_name npm -- start

ง่ายๆ เพียงเท่านี้เราก็สามารถ รัน process และ monitor ไปพร้อมกันได้แล้ว

หน้าตาแสดง Service ต่าง ๆ ที่เราทำการรัน Process ไว้

Bonus คำสั่งเพิ่มเติม

# คำสั่งสำหรับแสดง process ทั้งหมดใน server ที่เรามี
pm2 list
# คำสั่งสำหรับแสดงรายละเอียด process
pm2 show <id|name|all>
# คำสั่ง restart process
pm2 restart <id|name|all>
# คำสั่ง stop process
pm2 stop <id|name|all>
# คำสั่งดูรายละเอียดของเครื่อง server และ process ที่ทำงาน
pm2 dash

สำหรับใครกำลังมองหางานใหม่ๆ พวกเราต้องการเพื่อนร่วมทีมอยู่นะครับ ส่วนใครที่มีคำถามหรืออยากให้แชร์เรื่องไหน ก็แวะเข้ามาพูดคุยกับพวกเราได้นะครับที่
FB: NestJs Thailand

--

--