PM2 對 Node 項目進行線上部署與配置


pm2 是一個帶有負載均衡功能的 Node 應用的進程管理器。

1. pm2 主要特點

  • 內建負載均衡(使用Node cluster 集群模塊)
  • 保持后台運行
  • 進程守護,系統崩潰后自動重啟
  • 啟動多進程,充分利用CPU和內存
  • 自帶日志記錄功能
  • 控制台檢測
  • 提供 HTTP API

2. pm2 安裝及常用命令

安裝

$ npm install pm2 -g   // 全局安裝
$ pm2 --version  // 查看版本

pm2 命令

啟動(入口文件為app.js, 配置文件為pm2.conf.json):

// 直接啟動
$ pm2 start app.js

// 通過配置文件啟動
$ pm2 start app.js

查看啟動歷史:

$ pm2 list

重啟:

修改代碼后需要執行:

$ pm2 restart <AppName>/<id>

<!--  <AppName>/<id> 可通過 pm2 list 查看-->

停止進程(可重新啟動)

$ pm2 stop <AppName>/<id>

刪除進程(不可重新啟動)

$ pm2 delete <AppName>/<id>

其他命令

pm2 info <AppName>/<id>  // 查看進程詳細信息
pm2 log <AppName>/<id>   // 查看進程日志, 執行后,可進行線上調試,查看打印日志
pm2 monit <AppName>/<id>  // 打開監控 logs

3. pm2 常用配置

根目錄下,新建空文件 /logs/err.log 和 /logs/out.log

新建配置文件 pm2.conf.json

pm2.conf.json:

{
    "apps": {
        "name": "pm2-test-server", // 起個進程名,即AppName
        "script": "app.js",  // 啟動的入口文件(koa2項目中為/bin/www.js)
        "watch": true,      // 監聽文件變化,自動重啟
        "ignore_watch": [   // 不需要監聽的文件
            "node_modules",
            "logs"
        ],
        "instances": 4,   // 設置多進程
        "error_file": "logs/err.log",  // 錯誤日志存儲的文件
        "out_file": "logs/out.log",    // console.log()打印的都會放進去
        "log_date_format": "YYYY-MM-DD HH:mm:ss" // 給每行日志標記一個時間
    }
}

修改package.json:

{
  "name": "pm2-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "cross-env NODE_ENV=dev nodemon app.js",
    "prd": "cross-env NODE_ENV=production pm2 start pm2.conf.json"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
  
    ... 
    
    "cross-env": "^5.2.0",
    "nodemon": "^1.19.1"
    
    ...
    
  }
}

配置完后,執行下面命令,即可啟動項目

$ npm run prd


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM