PM2 简单使用

371 阅读1分钟

PM2

pm2核心价值

  • 进程守护
  • 多进程
  • 日志

安装

npm i pm2 -g

pm2 -v

使用

package.json

"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 app.js"
  },

app.js

const http = require('http')

const server = http.createServer((req, res) => {
    // 模拟日志
    console.log('cur time', Date.now())
    // 模拟错误
    console.error('假装出错', Date.now())

    // 模拟一个错误
    if (req.url === '/err') {
        throw new Error('/err 出错了')
    }

    res.setHeader('Content-type', 'application/json')
    res.end(
        JSON.stringify({
            errno: 0,
            msg: 'pm2 test server 3'
        })
    )
})

server.listen(8000)
console.log('server is listening on port 8000 ...')

常用命令

  • pm2 start ...、pm2 list
  • pm2 restart <AppName> / <id>
  • pm2 stop <AppName> / <id> 、pm2 delete <AppName> / <id>
  • pm2 info <AppName> / <id>
  • pm2 log <AppName> / <id>
  • pm2 monit <AppName> / <id>

配置

pm2.conf.json

{
  "apps":{
    "name":"pm2-test-server",
    "script": "app.js",
    "watch":true,
    "ignore_watch":[
      "node_module",
      "logs"
    ],
    "instances": 4,
    "error_file": "logs/err.log",
    "out_file": "logs/out.log",
    "log_date_format":"YYYY-MM-DD HH:mm:ss"
  }
}

package.json

"scripts": {
    "prd": "cross-env NODE_ENV=production pm2 start pm2.conf.json"
  },