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

pm2 是一個帶有負載均衡功能的 Node 應用的進程管理器。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

重啓:

修改代碼後須要執行:npm

$ 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.logjson

新建配置文件 pm2.conf.jsonapp

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:koa

{
  "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
相關文章
相關標籤/搜索