邱敬幃 Pardn Chiu
目錄什麼是PM2?安裝 PM2透過 PM2 啟動應用程式透過 PM2 啟動多組應用程式使用 PM2 監控應用程式狀態查看 PM2 運行日誌PM2 日誌基本用法PM2 日誌選項PM2 日誌級別PM2 JSON 配置PM2 單個 JSON 配置PM2 多個 JSON 配置系列文章相關連結
標籤

搭配 Pm2 讓 Node.js 持久化在線

Node.js: JavaScript 的後端魔法 (11)

564次觀看 0收藏 後端開發 Nodejs PM2
以下內容,我們將引導你完成 Node.js 應用程式的順利部署,以及如何使用 PM2 實現持久化運行,讓你的應用程式在生產環境中保持高效運行,同時享受 PM2 所提供的強大管理功能。
無論是初次上線還是優化現有應用程式,這一篇都將為你提供實用且易實施的指南。

什麼是PM2?

PM2 是一個先進的 Node.js 進程管理工具,它不僅能夠確保你的應用程式一直運行,還提供了豐富的功能,包括性能監控、日誌管理、自動重啟和擴展等。

安裝 PM2

首先,確保你的 Node.js 環境已經安裝,然後運行以下命令全局安裝 PM2:

  1. npm install pm2 -g

透過 PM2 啟動應用程式

使用 PM2 啟動一個 Node.js 應用程式非常簡單,只需運行以下命令:

  1. pm2 start app.js

這將啟動你的應用程式,PM2 會為其生成一個唯一的進程 ID,並將其放入背景運行。

透過 PM2 啟動多組應用程式

PM2 支持同時管理多個應用程式,可以通過應用程式的名稱來區分。例如:

  1. pm2 start app1.js --name="app1"
  2. pm2 start app2.js --name="app2"

使用 PM2 監控應用程式狀態

使用 PM2 監控應用程式的性能非常容易,運行以下命令即可:

  1. pm2 monit

查看 PM2 運行日誌

當你使用 PM2 管理你的 Node.js 應用程式時,了解日誌是追踪應用程式運行狀態和排除問題的重要手段。以下是有關如何使用 pm2 logs 的詳細解說:

PM2 日誌基本用法
  1. pm2 logs

如果你只想查看特定應用程式的日誌,可以提供應用程式的名稱或 ID:

  1. pm2 logs app1
  2. # 或
  3. pm2 logs 0 # 使用應用程式的ID
PM2 日誌選項

pm2 logs 命令還支持一些選項,以便更靈活地檢視日誌:

  • --json: 以JSON格式顯示日誌內容。
  • --format: 指定輸出的格式,如 "YYYY-MM-DD HH:mm:ss"。
  • --nostream: 不要實時輸出日誌,僅在檢索期間顯示。
PM2 日誌級別

PM2的日誌包括多個級別,例如 out (標準輸出) 和 error (錯誤輸出)。你可以使用不同的命令來查看特定級別的日誌:

  1. pm2 logs --out
  2. # 或
  3. pm2 logs --error

PM2 JSON 配置

在使用 PM2 管理 Node.js 應用程式時,可以使用 JSON 配置文件來指定應用程式的各種設定。這個配置文件提供了更多高級的選項,以及可以用於自動化和持久化的設置。以下是一個簡單的 app.json 的範例:

PM2 單個 JSON 配置
  1. {
  2.   "name": "app",
  3.   "script": "app.js",
  4.   "watch": true,
  5.   "instances": "max",
  6.   "exec_mode": "cluster",
  7.   "env": {
  8.     "NODE_ENV": "dev"
  9.   },
  10.   "log_date_format": "YYYY-MM-DD HH:mm Z"
  11. }
PM2 多個 JSON 配置
  1. {
  2.     "apps": [
  3.         {
  4.             "name": "app1",
  5.             "script": "app1.js",
  6.             "watch": true,
  7.             "instances": "max",
  8.             "exec_mode": "cluster",
  9.             "env": {
  10.                 "NODE_ENV": "dev"
  11.             },
  12.             "log_date_format": "YYYY-MM-DD HH:mm Z"
  13.         },
  14.         {
  15.             "name": "app2",
  16.             "script": "app2.js",
  17.             "watch": true,
  18.             "instances": "max",
  19.             "exec_mode": "cluster",
  20.             "env": {
  21.                 "NODE_ENV": "dev"
  22.             },
  23.             "log_date_format": "YYYY-MM-DD HH:mm Z"
  24.         }
  25.     ]
  26. }

以下解釋這個 app.json 的參數設定:

  • name: 應用程式的名稱。
  • script: 要執行的主要應用程式檔案。
  • watch: 監視檔案的變化,自動重新啟動應用程式。也可以設置為監聽特定檔案或資料夾更動 ["app.js", "routes", "public"]
  • instances: 要啟動的進程數量,這裡設置為 max 表示使用所有可用的 CPU 核心。
  • exec_mode: 執行模式,這裡設置為 cluster 表示使用多進程模式, fork 則為單進程。
  • env: 環境變數的配置,這裡設置了 NODE_ENVdev
  • log_date_format: 日誌的日期格式。

以上只是一個簡單的例子, app.json 支持的設置還有很多,包括生命周期事件、部署配置、網絡設置等。透過這樣的配置文件,你可以更靈活地管理和配置你的 Node.js 應用程式。

使用 app.json 的方式,你只需要運行以下命令即可啟動應用程式:

  1. pm2 start app.json

系列文章


相關連結