以下內容,我們將引導你完成 Node.js 應用程式的順利部署,以及如何使用 PM2 實現持久化運行,讓你的應用程式在生產環境中保持高效運行,同時享受 PM2 所提供的強大管理功能。
無論是初次上線還是優化現有應用程式,這一篇都將為你提供實用且易實施的指南。
PM2 是一個先進的 Node.js 進程管理工具,它不僅能夠確保你的應用程式一直運行,還提供了豐富的功能,包括性能監控、日誌管理、自動重啟和擴展等。
首先,確保你的 Node.js 環境已經安裝,然後運行以下命令全局安裝 PM2:
- npm install pm2 -g
使用 PM2 啟動一個 Node.js 應用程式非常簡單,只需運行以下命令:
- pm2 start app.js
這將啟動你的應用程式,PM2 會為其生成一個唯一的進程 ID,並將其放入背景運行。
PM2 支持同時管理多個應用程式,可以通過應用程式的名稱來區分。例如:
- pm2 start app1.js --name="app1"
- pm2 start app2.js --name="app2"
使用 PM2 監控應用程式的性能非常容易,運行以下命令即可:
- pm2 monit
當你使用 PM2 管理你的 Node.js 應用程式時,了解日誌是追踪應用程式運行狀態和排除問題的重要手段。以下是有關如何使用 pm2 logs
的詳細解說:
- pm2 logs
如果你只想查看特定應用程式的日誌,可以提供應用程式的名稱或 ID:
- pm2 logs app1
- # 或
- pm2 logs 0 # 使用應用程式的ID
pm2 logs
命令還支持一些選項,以便更靈活地檢視日誌:
--json
: 以JSON格式顯示日誌內容。--format
: 指定輸出的格式,如 "YYYY-MM-DD HH:mm:ss"。--nostream
: 不要實時輸出日誌,僅在檢索期間顯示。PM2的日誌包括多個級別,例如 out (標準輸出) 和 error (錯誤輸出)。你可以使用不同的命令來查看特定級別的日誌:
- pm2 logs --out
- # 或
- pm2 logs --error
在使用 PM2 管理 Node.js 應用程式時,可以使用 JSON 配置文件來指定應用程式的各種設定。這個配置文件提供了更多高級的選項,以及可以用於自動化和持久化的設置。以下是一個簡單的 app.json
的範例:
- {
- "name": "app",
- "script": "app.js",
- "watch": true,
- "instances": "max",
- "exec_mode": "cluster",
- "env": {
- "NODE_ENV": "dev"
- },
- "log_date_format": "YYYY-MM-DD HH:mm Z"
- }
- {
- "apps": [
- {
- "name": "app1",
- "script": "app1.js",
- "watch": true,
- "instances": "max",
- "exec_mode": "cluster",
- "env": {
- "NODE_ENV": "dev"
- },
- "log_date_format": "YYYY-MM-DD HH:mm Z"
- },
- {
- "name": "app2",
- "script": "app2.js",
- "watch": true,
- "instances": "max",
- "exec_mode": "cluster",
- "env": {
- "NODE_ENV": "dev"
- },
- "log_date_format": "YYYY-MM-DD HH:mm Z"
- }
- ]
- }
以下解釋這個 app.json
的參數設定:
name
: 應用程式的名稱。script
: 要執行的主要應用程式檔案。watch
: 監視檔案的變化,自動重新啟動應用程式。也可以設置為監聽特定檔案或資料夾更動 ["app.js", "routes", "public"]
。instances
: 要啟動的進程數量,這裡設置為 max
表示使用所有可用的 CPU 核心。exec_mode
: 執行模式,這裡設置為 cluster
表示使用多進程模式, fork
則為單進程。env
: 環境變數的配置,這裡設置了 NODE_ENV
為 dev
。log_date_format
: 日誌的日期格式。以上只是一個簡單的例子, app.json
支持的設置還有很多,包括生命周期事件、部署配置、網絡設置等。透過這樣的配置文件,你可以更靈活地管理和配置你的 Node.js 應用程式。
使用 app.json
的方式,你只需要運行以下命令即可啟動應用程式:
- pm2 start app.json