pm2的安装
npm install pm2 -g
pm2 -version //看版本号
初始化项目,pm2启动
在项目文件夹中安装nodemon和cross-env
npm install --save-dev nodemon
npm i cross-env --save-dev --registry=https://registry.npm.taobao.org
配置package.json文件
"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)=>{
res.setHeader('Content-type','application/json')
res.end(
JSON.stringify({
errno:0,
msg:'pm2 test serber 1'
})
)
})
server.listen(3000,()=>{
console.log('running...')
})
npm run prd 运行
PM2常用命令
pm2 start ..//start后面可以跟一个配置文件或其他形式
pm2 list //看控制台的进程列表
pm2 restart+进程id或者进程名 //重启进程
pm2 stop + 进程id或者进程名 //停用
pm2 delete +进程id或者进程名 //删除
pm2 info +进程id或者进程名//查看基本信息
pm2 log +进程id或者进程名?/看日志打印()
pm2 monit +进程id或者进程名//进程信息
进程守护
在先前的代码中,插入下列代码检测进程守护功能
if(req.url ==='/err'){
throw new Error('/err 出错了')
}
当你访问http://127.0.0.1:3000/err是cmd窗口报错,但是pm2又会重新启动进程
PM2的常用配置
{
"apps": {
"name": "pm2-test-server",
"script": "app.js",
"watch": true,
"ignore_watch": [
"node_modules",
"logs"
],
"instances": 4,
"error_file": "logs/err.log",
"out_file": "logs/out.log",
"log_date_format": "YYYY-MM-DD HH:mm:ss"
}
}
对配置的解释
"watch" :true,监听文件变化
"ignore_watch":[
"node_modules",
"logs"
],
"error_file":"logs/err.log",
"out_file":"logs/out.log",
这个是标注那些不用监听
"instances": 4,
多进程:同时处理4个进程
"error_file":"logs/err.log",
"out_file":"logs/out.log",
将日志放入两个自定义的文件,这两个文件是自己建的
"log_data_format":"YYYY-MM-DD HH:mm:ss"
加入时间格式
将以前的package.json的这行改一下
多进程
如果你将"instances": 8,你npm run dev 就会出现下列情况
前提是你的计算机cpu是8核的
而且你的日志文件也会有8对