Chuyển tới nội dung chính

PM2 - Cheatsheet

PM2 là một quản lý tiến trình dạng daemon sẽ giúp bạn quản lý và duy trì ứng dụng của mình trực tuyến. CheatSheet tổng hợp các lệnh PM2 thường gặp.

cửa hàng
roadmaps
cheatsheet
tài liệu phỏng vấn

🔖 Gợi ý từ Admin

📝 Tài liệu phỏng vấn kiến thức lập trình: Xem tại đây!!!

📌 Tìm hiểu về thuật toán: Xem tại đây!!!

📌 Roadmaps - Lộ trình trở thành một lập trình viên: Xem tại đây!!!

⚡️ Cheatsheet các ngôn ngữ lập trình: Xem tại đây!!!

⚡️ Handbook lập trình: Xem tại đây!!!

I. Tổng hợp PM2 Cheatsheet

⚡️ Cài đặt: Bản PM2 mới nhất có thể được cài đặt bằng NPM hoặc Yarn

npm install pm2@latest -g

⚡️ Khởi động ứng dụng

# Cách đơn giản nhất để khởi động, daemonize và theo dõi ứng dụng của bạn là sử dụng dòng lệnh này
$ pm2 start app.js

# Hoặc khởi động 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

⚡️ Một số tùy chọn bạn có thể truyền vào CLI

# Chỉ định tên ứng dụng
--name <app_name>

# Theo dõi và khởi động lại ứng dụng khi có sự thay đổi trong tập tin
--watch

# Đặt ngưỡng bộ nhớ để khởi động lại ứng dụng
--max-memory-restart <200MB>

# Chỉ định tệp nhật ký
--log <log_path>

# Truyền đối số bổ sung cho script
-- arg1 arg2 arg3

# Độ trễ giữa các lần khởi động tự động
--restart-delay <delay in ms>

# Tiền tố log theo thời gian
--time

# Không tự động khởi động lại ứng dụng
--no-autorestart

# Chỉ định cron cho khởi động lại bắt buộc
--cron <cron_pattern>

# Đính kèm vào log ứng dụng
--no-daemon

⚡️ Quản lý các tiến trình

# Quản lý trạng thái ứng dụng đơn giản với các lệnh sau
$ pm2 restart tên_ứng_dụng
$ pm2 reload tên_ứng_dụng
$ pm2 stop tên_ứng_dụng
$ pm2 delete tên_ứng_dụng
# Thay vì tên_ứng_dụng, bạn có thể truyền
# - all để thực hiện trên tất cả các tiến trình
# - id để thực hiện trên một id tiến trình cụ thể

⚡️ Chế độ Cluster: Đối với ứng dụng Node.js, PM2 bao gồm một trình cân bằng tải tự động sẽ chia sẻ tất cả các kết nối HTTP[s]/Websocket/TCP/UDP giữa mỗi quá trình được tạo ra.

# Để bắt đầu ứng dụng ở chế độ Cluster
$ pm2 start app.js -i max

Đọc thêm về chế độ cluster tại đây.

⚡️ Kiểm tra trạng thái, logs, metrics: Bây giờ bạn đã khởi động ứng dụng này, bạn có thể kiểm tra trạng thái, logs, metrics và thậm chí có thể sử dụng bảng điều khiển trực tuyến với pm2.io.

# Liệt kê trạng thái của tất cả các ứng dụng do PM2 quản lý
$ pm2 [list|ls|status]

# Hiển thị logs theo thời gian thực
$ pm2 logs

# Để xem logs cũ hơn
$ pm2 logs --lines 200

# Đây là một bảng điều khiển thời gian thực phù hợp trực tiếp vào terminal của bạn
$ pm2 monit

# Bảng điều khiển dựa trên web, trải dọc qua các máy chủ với hệ thống chẩn đoán
$ pm2 plus

⚡️ Tệp Ecosystem: Bạn cũng có thể tạo một tệp cấu hình, gọi là Tệp Ecosystem, để quản lý nhiều ứng dụng. Để tạo một tệp Ecosystem.

$ pm2 ecosystem
// Điều này sẽ tạo ra một tệp ecosystem.config.js
module.exports = {
apps: [
{
name: 'app',
script: './app.js',
env: {
NODE_ENV: 'development',
},
env_production: {
NODE_ENV: 'production',
},
},
{
name: 'worker',
script: 'worker.js',
},
],
};

Và khởi động nó dễ dàng

$ pm2 start ecosystem.config.js

Đọc thêm về khai báo ứng dụng tại đây

⚡️ Cập nhật PM2

# Cài đặt phiên bản mới nhất
$ npm install pm2@latest -g

# Sau đó cập nhật PM2 trong bộ nhớ
$ pm2 update

⚡️ Thiết lập tập lệnh khởi chạy cùng hệ thống

Khởi động lại PM2 với các quy trình bạn quản lý sau khi máy chủ khởi động/làm mới là rất quan trọng. Để giải quyết điều này, chỉ cần chạy lệnh sau để tạo một tập lệnh khởi chạy hệ thống:

$ pm2 save

Đọc thêm về trình tạo tập lệnh khởi chạy tại đây

⚡️ Khởi động lại ứng dụng khi có thay đổi

# Rất dễ dàng với tùy chọn --watch
$ cd /path/to/my/app
$ pm2 start env.js --watch --ignore-watch="node_modules"

# Điều này sẽ theo dõi và khởi động lại ứng dụng khi có bất kỳ thay đổi nào từ thư mục hiện tại + tất cả các thư mục con và sẽ bỏ qua bất kỳ thay đổi nào trong thư mục node_modules --ignore-watch="node_modules".
# Sau đó, bạn có thể sử dụng pm2 logs để kiểm tra nhật ký của ứng dụng đã khởi động lại.

⚡️ Tổng hợp lệnh

Dưới đây là một số lệnh quan trọng đáng biết. Hãy thử chúng với một ứng dụng mẫu hoặc với ứng dụng web hiện tại trên máy phát triển của bạn.

# Chế độ Fork
$ pm2 start app.js --name my-api # Đặt tên cho quá trình

# Chế độ Cluster
$ pm2 start app.js -i 0 # Sẽ khởi động tối đa các quy trình với LB tùy thuộc vào CPU khả dụng
$ pm2 start app.js -i max # Tương tự như trên, nhưng đã lỗi thời.
$ pm2 scale app +3 # Mở rộng `app` thêm 3 workers
$ pm2 scale app 2 # Mở rộng hoặc thu hẹp `app` để có tổng cộng 2 workers

# Liệt kê
$ pm2 list # Hiển thị tình trạng của tất cả các quy trình
$ pm2 jlist # In danh sách quy trình dưới dạng JSON thô
$ pm2 prettylist # In danh sách quy trình dưới dạng JSON được làm đẹp
$ pm2 describe 0 # Hiển thị tất cả thông tin về một quy trình cụ thể
$ pm2 monit # Giám sát tất cả các quy trình

# Nhật ký
$ pm2 logs [--raw] # Hiển thị tất cả nhật ký của tất cả các quy trình theo dạng streaming
$ pm2 flush # Làm trống tất cả các tệp nhật ký
$ pm2 reloadLogs # Tải lại tất cả các nhật ký

# Hành động
$ pm2 stop all # Dừng tất cả các quy trình
$ pm2 restart all # Khởi động lại tất cả các quy trình

$ pm2 reload all # Không có thời gian downtime khi tải lại (đối với ứng dụng mạng)

$ pm2 stop 0 # Dừng quy trình cụ thể theo id
$ pm2 restart 0 # Khởi động lại quy trình cụ thể theo id

$ pm2 delete 0 # Sẽ loại bỏ quy trình khỏi danh sách pm2
$ pm2 delete all # Sẽ loại bỏ tất cả các quy trình khỏi danh sách pm2

# Linh tinh
$ pm2 reset <process> # Đặt lại dữ liệu meta (thời gian khởi động lại...)
$ pm2 updatePM2 # Cập nhật pm2 trong bộ nhớ
$ pm2 ping # Đảm bảo rằng pm2 daemon đã được khởi động
$ pm2 sendSignal SIGUSR2 my-app # Gửi tín hiệu hệ thống đến tập lệnh
$ pm2 start app.js --no-daemon
$ pm2 start app.js --no-vizion
$ pm2 start app.js --no-autorestart

II. Tài liệu tham khảo

Chia sẻ: