使用pm2管理yapi项目时,发现启动成功后无法访问,查看pm2log发现是因为api的日志变更导致node服务重启。
猜测原因可能是因为启动的命令是
pm2 start server/app.js --watch
根据文档说明 --watch会一直监听项目文件,如果项目文件发生变化,会自动重启服务,所以log文件的变更导致一直重启的问题。
解决方法
在项目目录执行下面的命令生成启动配置文件
pm2 ecosystem
vim ecosystem.config.js
将文件内容内修改如下
module.exports = {
apps : [{
name: 'YAPI',
script: 'vendors/server/app.js',
// Options reference: https://pm2.keymetrics.io/docs/usage/application-declaration/
// args: 'one two',
// instances: 1,
autorestart: true,
watch: true,
max_memory_restart: '500M',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
},
//输出console.error以及console.log
error_file: "pm2logs/err.log",
out_file: "pm2logs/out.log",
log_date_format: "YYYY-MM-DD HH:mm:ss:S Z",
ignore_watch : "log", //添加这个参数,忽略监听log文件夹
}]
};
注意
因为在启动配置文件中指定了 error_file 和 out_file,所以需要先把 pm2logs目录创建好,要不然第一次启动可能会失败。
停止之前的项目
pm2 stop 0
启动本项目
pm2 start ecosystem.config.js
查看正在运行的项目
pm2 list
![]()
