PM2配置文件的使用、管理多个Node.js项目
# 问题简介
有多个 Node.js
进程需要一起管理时,各自需要的参数也不同时,创建一个配置文件来管理是最好的方案。
# 解决方案
# 1、基础版本配置文件
pm2 init simple
可以生成 ecosystem.config.js
文件:
module.exports = {
apps: [{
name: "app1",
script: "./app.js"
}]
}
2
3
4
5
6
# 2、复杂版本的配置文件
pm2 init
等同于
pm2 ecosystem
可以生成带有 deploy
属性的配置文件:ecosystem.config.js
module.exports = {
apps: [{
script: 'index.js',
watch: '.'
}, {
script: './service-worker/',
watch: ['./service-worker']
}],
deploy: {
production: {
user: 'SSH_USERNAME',
host: 'SSH_HOSTMACHINE',
ref: 'origin/master',
repo: 'GIT_REPOSITORY',
path: 'DESTINATION_PATH',
'pre-deploy-local': '',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production',
'pre-setup': ''
}
}
};
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 使用配置文件
启动、停止、重启、重载、删除配置文件中所有项目:
pm2 start ecosystem.config.js
pm2 stop ecosystem.config.js
pm2 restart ecosystem.config.js
pm2 reload ecosystem.config.js
pm2 delete ecosystem.config.js
2
3
4
5
启动指定应用
pm2 start ecosystem.config.js --only api-app
pm2 start ecosystem.config.js --only "api-app,worker-app"
2
注意
请注意,使用Javascript
配置文件要求文件名结尾为 .config.js
# 使用JSON格式
例如命名为config.json
:
{
"apps": [{
"name": "test", //名称
"script": "server.js", //程序入口
"cwd": "./", //根目录
"instances": 1,
"error_file":"./logs/error.log",//错误输出日志
"out_file":"./logs/out.log", //日志
"log_date_format":"YYYY-MM-DD HH:mm Z" //日期格式
}]
}
2
3
4
5
6
7
8
9
10
11
启动命令:
pm2 start config.json
也可以把命令写在package.json
里。通过npm run pm2
来启动
可以根据需要设置任意多个JSON应用程序声明。
{
"apps": [
{
"name": "testOne",
"script": " testOne/server.js",
"instances": 1,
"log_date_format": "YYYY-MM-DD HH:mm Z",
"max_memory_restart": "500M"
},
{
"name": "testTwo",
"script": " testTwo/server.js",
"instances": 1,
"log_date_format": "YYYY-MM-DD HH:mm Z",
"max_memory_restart": "500M"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 常用配置项说明:
apps
: json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用;
name
:应用程序名称;
cwd
:应用程序所在的目录;
script
:应用程序的脚本路径;
log_date_format
: 指定日志日期格式,如YYYY-MM-DD HH:mm:ss;
error_file
:自定义应用程序的错误日志文件,代码错误可在此文件查找;
out_file
:自定义应用程序日志文件,如应用打印大量的标准输出,会导致pm2日志过大;
pid_file
:自定义应用程序的pid文件;
interpreter
:指定的脚本解释器;
interpreter_args
:传递给解释器的参数;
instances
: 应用启动实例个数,仅在cluster模式有效,默认为fork;
min_uptime
:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts
设置数量;
max_restarts
:设置应用程序异常退出重启的次数,默认15次(从0开始计数);
autorestart
:默认为true, 发生异常的情况下自动重启;
cron_restart
:定时启动,解决重启能解决的问题;
max_memory_restart
:最大内存限制数,超出自动重启;
watch
:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。
ignore_watch
:忽略监听的文件夹,支持正则表达式;
merge_logs
: 设置追加日志而不是新建日志;
exec_interpreter
:应用程序的脚本类型,默认是nodejs;
exec_mode
:应用程序启动模式,支持fork和cluster模式,默认是fork;
autorestart
:启用/禁用应用程序崩溃或退出时自动重启;
vizion
:启用/禁用vizion特性(版本控制);
env
:环境变量,object类型;
force
:默认false,如果true,可以重复启动一个脚本。pm2不建议这么做;
restart_delay
:异常重启情况下,延时重启时间;
- 01
- Node与GLIBC_2.27不兼容解决方案08-19
- 02
- Git清空本地文件跟踪缓存08-13