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"
},