本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/10/04/PM2%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/
摘要
本文主要讲述了:
- 配置文件格式
- 配置
- 多应用
- bug
正文
配置文件格式
PM2 的配置文件可以用 3 种文件格式编写:
- JavaScript
ecosystem.config.js
推荐使用 - JSON
- YAML
特别注意:JavaScript 格式的配置文件的名称必须以.config.js
作为结尾。例如:ecosystem.config.js
。
配置
name
值类型:字符串
应用名称
script
值类型:字符串
脚本路径
env
值类型:对象
环境参数
watch
值类型:布尔值或数组
- 若为
true
,则 PM2 将在监听到目录或子目录中的文件发生变更时,自动重启应用 - 若为数组,则 PM2 将在监听到数组中的目录或子目录中的文件发生变更时,自动重启应用
注意:pm2 隐式忽略node_modules
和以.
打头的文件或目录。如果需要监听它们,可以将ignore_watch
置空
示例:以下配置皆无法监听以.
打头的文件或目录
learn_pm2/ecosystem.config.js
1 | module.exports = { |
learn_pm2/ecosystem.config.js
1 | module.exports = { |
示例:监听所有文件或目录,包括node_modules
和以.
打头的文件或目录
learn_pm2/ecosystem.config.js
1 | module.exports = { |
watch_delay
值类型:数字
单位:毫秒
两次重启之间的时间间隔
使用禁止前沿执行的 throttle 策略
示例:
watch_delay: 4e3
表示:
- 当 PM2 监听到第
1
次文件变更时,将计划在4e3
毫秒后重启应用 - 如果在这
4e3
毫秒内又监听到新的文件变更,之前的延时重启计划不受影响,且这次新的文件变更将不会生成新的延时重启计划
ignore_watch
值类型:数组
不需要监听的列表
out_file
单个应用的日志文件名,记录使用console.log()
输出的信息
示例:
learn_pm2/ecosystem.config.js
1 | module.exports = { |
error_file
单个应用的错误日志文件名,记录报错信息和使用console.error()
输出的信息
默认值:$HOME/.pm2/logs/{appName}-error.log
示例:
learn_pm2/ecosystem.config.js
1 | module.exports = { |
time
是否在out_file
和error_file
中启用时间戳,默认为false
。
示例:
1 | module.exports = { |
多应用
一个配置文件可以同时配置多个应用。
示例:
learn_pm2/ecosystem.config.js
1 | module.exports = { |
bug
经过测试:以下情况会导致watch
特性未开启(尽管显示已开启)。
示例:
learn_pm2/ecosystem.config.js
1 | module.exports = { |
- 启动
1 |
|
- 停止
1 |
|
- 再次启动
1 |
|
- 查询 PM2 管理的应用列表
1 |
|
此时watch
特性显示为启用,但实际却是关闭的。
这个问题目前有 2 种解决方案:
方案一:
在停止后先删除再启动
1 |
|
方案二:
在停止后使用--watch
参数单独启动
1 |
|
参考资料
本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/10/04/PM2%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/
本文对你有帮助?请支持我
- 本文链接: https://jsweibo.github.io/2019/10/04/PM2%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/
- 版权声明: 除非另有说明,否则本网站上的内容根据署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。