最近在写egg后台项目,部署到线上环境的时候想用pm2进程管理器来进行配置,查阅了一翻资料设置通了,记下来其他人有用到的可以拿去
在egg项目的根目录定义启动文件
// server.js
const egg = require('egg');
const workers = Number(process.argv[2] || require('os').cpus().length);
egg.startCluster({
workers,
baseDir: __dirname,
});
这样,我们就可以通过 PM2 进行启动了(本次启动在egg项目的根目录)
pm2 start server.js --name test
创建并配置pm2配置文件
pm2.config.js,配置里边可以配置项目名,执行文件,实例个数,内存限制,日志输出,重启次数,监听重启等
module.exports = {
apps: [
{
name: '智能后端接口', // 项目名
script: './server.js', // 执行文件
cwd: './', // 根目录
args: 'one two', // 传递给脚本的参数
interpreter: '', // 指定的脚本解释器
interpreter_args: '', // 传递给解释器的参数 //
exec_mode: 'fork', // 应用启动模式,支持fork和cluster模式
instances: 1, // 应用启动实例个数,仅在cluster模式有效 默认为fork;或者 max
max_memory_restart: '1G', // 最大内存限制数,超出自动重启
error_file: './logs/pm2/error.log', //错误输出日志
out_file: './logs/pm2/out.log', //日志
merge_logs: true, // 设置追加日志而不是新建日志
log_date_format: 'YYYY-MM-DD HH:mm:ss', // 指定日志文件的时间格式
min_uptime: 1000, // 应用运行少于时间被认为是异常启动
max_restarts: 30, // 最大异常重启次数,即小于min_uptime运行时间重启次数;
autorestart: true, // 默认为true, 发生异常的情况下自动重启
cron_restart: '', // crontab时间格式重启应用,目前只支持cluster模式;
restart_delay: 60, // 异常重启情况下,延时重启时间 //
watch: false, // 是否监听文件变动然后重启 //
ignore_watch: [
// // 不用监听的文件 //
'node_modules', //
'logs', //
'news', //
'run', //
'test', //
'typings', //
'pm2.config' //
],
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}
]
};
此时可以 pm2 start pm2.config.js,就可以在pm2 list 里边看到你的项目的情况
这是我配置好的项目代码,大家如果用的话可以去下载来看看
https://github.com/jameding/eggjs_cli