PM2使用詳解:Node.js應用的進程管理利器

PM2 是一個進程管理工具,專為 Node.js 應用程序設計,旨在簡化應用的部署和管理。它提供了應用程序的啟動、停止、重啟、監控等功能,並具有自動重啟、負載均衡、日誌管理等高級特性。以下是 PM2 的詳細介紹和使用方法。

主要功能

  1. 進程管理:啟動、停止、重啟、刪除應用。
  2. 監控:實時監控應用的狀態、CPU、內存使用情況。
  3. 日誌管理:查看和管理應用的日誌。
  4. 負載均衡:通過集群模式(Cluster Mode)實現負載均衡。
  5. 自動重啟:在應用崩潰或出現錯誤時自動重啟。
  6. 啟動腳本:開機時自動啟動應用。
  7. 配置管理:使用 JSON 配置文件管理多個應用。

安裝 PM2

要使用 PM2,首先需要安裝它。可以通過 npm 安裝:

Terminal window
1
npm install -g pm2

基本用法

啟動應用

啟動一個應用,只需使用 pm2 start 命令,並指定應用入口文件:

Terminal window
1
pm2 start app.js

查看應用狀態

使用 pm2 list 命令查看當前運行的所有應用及其狀態:

Terminal window
1
pm2 list

停止應用

使用 pm2 stop 命令停止指定應用:

Terminal window
1
pm2 stop app.js

或者使用應用 ID 停止:

Terminal window
1
pm2 stop 0

重啟應用

使用 pm2 restart 命令重啟指定應用:

Terminal window
1
pm2 restart app.js

或者使用應用 ID 重啟:

Terminal window
1
pm2 restart 0

刪除應用

使用 pm2 delete 命令刪除指定應用:

Terminal window
1
pm2 delete app.js

或者使用應用 ID 刪除:

Terminal window
1
pm2 delete 0

高級用法

啟動多實例(集群模式)

使用 -i 選項可以啟動多個實例,以利用多核 CPU:

Terminal window
1
pm2 start app.js -i max

max 表示啟動與 CPU 核數相等的實例數,你也可以指定具體的實例數,例如 -i 4 啟動 4 個實例。

管理日誌

查看指定應用的日誌:

Terminal window
1
pm2 logs app.js

或者查看所有應用的日誌:

Terminal window
1
pm2 logs

監控應用

使用 pm2 monit 命令可以實時監控所有應用的狀態:

Terminal window
1
pm2 monit

使用 JSON 配置文件

PM2 允許使用 JSON 配置文件來管理應用。首先創建一個 ecosystem.config.js 文件:

1
module.exports = {
2
apps: [
3
{
4
name: "app",
5
script: "./app.js",
6
instances: "max",
7
exec_mode: "cluster",
8
watch: true,
9
env: {
10
NODE_ENV: "development",
11
},
12
env_production: {
13
NODE_ENV: "production",
14
},
15
},
16
],
17
};

然後使用 pm2 start 命令啟動配置文件中的應用:

Terminal window
1
pm2 start ecosystem.config.js

設置開機自啟動

PM2 可以配置為在系統啟動時自動啟動應用。首先,生成啟動腳本:

Terminal window
1
pm2 startup

接著保存當前的進程列表:

Terminal window
1
pm2 save

重載應用

如果你希望無縫重載應用(不中斷服務),可以使用 pm2 reload 命令:

Terminal window
1
pm2 reload app.js

或者使用應用 ID:

Terminal window
1
pm2 reload 0

常用命令匯總

  • 啟動應用:pm2 start <app>
  • 停止應用:pm2 stop <app>
  • 重啟應用:pm2 restart <app>
  • 刪除應用:pm2 delete <app>
  • 查看應用列表:pm2 list
  • 查看應用日誌:pm2 logs <app>
  • 實時監控:pm2 monit
  • 開機自啟動:pm2 startuppm2 save

通過這些功能,PM2 提供了一套完整的解決方案來管理 Node.js 應用的生命周期,從開發到生產環境的部署,都能夠大大簡化應用管理的複雜度,提高運行的穩定性和可靠性。