Trong bài viết này, mình sẽ giới thiệu về PM2, cho thấy lý do tại sao nó là một công cụ có giá trị như vậy để quản lý các ứng dụng NodeJS.
Trong quá trình phát triển một ứng dụng nodejs, bạn thường khởi chạy app bằng lệnh node app.js
, nhưng khi đưa ứng dụng lên môi trường production(prod) thì không đơn giản như vậy.
Trên môi trường prod bạn cần phải quan tâm tới nhiều thứ hơn: Phân quyền người dùng chạy ứng dụng, quản lý tiến trình, logs, tự khởi động lại…
PM2 là gì?
PM2 là một công cụ quản lý tiến trình nodejs hoàn hảo cho bạn trong hầu hết trường hợp chạy ứng nodejs trên môi trường prod.
Một trong những điểm mạnh của công cụ này là có cung cấp API cho phép lập trình viên có thể điều khiển, giám sát các tiến trình nodejs khác trong một ứng dụng nodejs.
Cài đặt PM2
Phiên bản PM2 mới nhất có thể cài đặt được với NPM hoặc Yarn:
npm install pm2@latest -g
# or yarn global add pm2
Để khởi động một ứng dụng NodeJS
Cách đơn giản nhất để bắt đầu, trình bày và theo dõi ứng dụng của bạn bằng cách sử dụng dòng lệnh này:
pm2 start app.js
Hoặc bắt đầu bất kỳ ứng dụng nào khác một cách dễ dàng:
pm2 start bashscript.sh
pm2 start python-app.py --watch
pm2 start binary-file -- --port 1520
Bạn có thể tìm hiểu thêm tại đây
Quản lý quy trình ứng dụng NodeJS với PM2
Quản lý trạng thái ứng dụng rất đơn giản, đây là các lệnh bạn có thể sử dụng:
pm2 restart app_name
pm2 reload app_name
pm2 stop app_name
pm2 delete app_name
Thay vì app_name
bạn có thể sử dụng:
all
hành động trên tất cả các processesid
hành động trên một id processes cụ thể
Start một npm script với pm2
Đa số trong các ứng dụng NodeJs bạn sẽ sử dụng npm để quản lý các module, package đi kèm. Và bao gồm cả các npm scripts đi kèm để chạy ứng dụng trong file package.json.
Ví dụ như file package.json sau:
{
"name": "pm2_app_demo",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js",
"test": "echo "Error: no test specified" && exit 1"
},
"dependencies": {
"body-parser": "^1.17.2",
"express": "^4.15.3",
"pm2": "^2.6.1",
"socket.io": "^2.0.3"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"bootstrap": "^3.3.7",
"jquery": "^3.2.1"
}
}
Thông thường, để chạy project trong file package.json trên, bạn sẽ chạy lệnh npm run start
hoặc npm run dev
Xem thêm:
- Cài đặt WordPress với Caddy web server trên Ubuntu 18.04
- Hướng dẫn cài đặt Node.js trên VPS Ubuntu 18.04
- Tạo Blog đơn giản với Nuxt JS và WordPress API
Nhưng đối với pm2 để chạy các npm scripts, bạn có thể sử dụng cách sau đây.
Tạo một file json đặt tên là my-app-pm2.json với nội dung như sau
{ "apps": [ { "name": "my-app", "script": "npm", "args" : "start" } ] }
Và sau đó chạy pm2 với file json vừa tạo: pm2 start my-app-pm2.json