PM2 ตัวช่วยจัดการ Process และ Monitor Service Node.Js (Production Mode)
กับสถานะการณ์ COVID-19 ในช่วงนี้ การทำงานแบบ WFH เป็นสิ่งที่หลีกเลี่ยงไม่ได้แต่ในความร้ายๆ ของเจ้าไวรัสนี้ ผมแอบเห็นความดีงามของการ WFH อยู่บ้าง
นั่นก็คือ ลดเวลาในการเดินทางไปทำงานได้พอสมควร ก็เลยเกิดเป็นไอเดียว่า ไหน ๆ ก็ได้เวลากลับคืนมาแล้ว หาอะไรมาแชร์ บ้างดีกว่าโดยเป็นเรื่องทั่วๆ ไปเนี่ยแหละ
ที่เราใช้ทำงานกันเป็นประจำกันอยู่แล้ว เกริ่นซะเยอะเลย เข้าเรื่องเลยล่ะกันครับ
pm2 คือ? ที่แน่ๆ อย่าเพิ่งคิดไปถึง pm2.5 อะไรนั่นนะครับ ไมได้เกี่ยวกันเลย
pm2 ในที่นี้คือ เครื่องมือที่ช่วยให้ process ที่เป็น nodejs ของเราเนี่ยทำงานได้ตลอดเวลานั่นเอง กรณีที่มีปัญหาอะไรก็แล้วแต่ pm2 ก็จะทำการ restart process ของเราให้โดยอัตโนมัติ นอกจากนี้ยังไม่พอ ยังมีหน้า dashboard แสดงรายละเอียดการทำงานของระบบ เพื่อง่ายต่อการ monitor process ของเราอีก โครตคลูพูดเลย
นอกจาก pm2 ยังมีตัว Service อื่นๆที่คล้ายๆกัน ให้เราเลือกใช้งานมากมายอย่างเช่น supervisor, forever หรือรุ่นพี่สุดฮอตอย่าง nodemon ลองศึกษาเพิ่มเติมกันได้
มาเริ่มต้นการใช้งานกันดีกว่า
จากภาพด้านบน ให้เราคลิ๊กไปที่ปุ่ม monitor pm2 ทางด้านขวามือ
PM2 is a daemon process manager that will help you manage and keep your application online
จากนั้นก็ทำการสมัครสมาชิกกันให้เรียบร้อย
กล่องนี้จะให้เราทำการตั้งชื่อ buckets สำหรับเก็บ process ที่เราจะทำกันสร้างภายในอนาคตอันใกล้ๆ นี้
หลังจากสร้างเสร็จก็จะได้ buckets สำหรับใช้งาน โดยใน buckets version ฟรีเราสามารถสั่งรัน process ได้ 4 process เท่านั้นนะครับ
หลังจากกดเข้ามาใช้ในงาน 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 ไปพร้อมกันได้แล้ว
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