什么是 PM2?
PM2 是一个跨平台的、开源的 Node.js 应用程序的进程管理器。它可以管理 Node.js 进程的启动、重启、停止以及进程守护等功能,同时提供了丰富的监控、异常处理和自定义事件处理的能力,是广泛用于 Node.js 项目部署和管理的工具。
配置文件的作用
在使用 PM2 进行应用程序管理时,配置文件是不可或缺的一环。通过配置文件,可以指定应用程序的启动参数、环境变量、进程数量和管理方式等,从而实现更加灵活和精细的管理。同时,配置文件还可以方便地进行版本管理和复用,以及支持多人协同管理等。
配置文件的格式和语法
PM2 的配置文件采用 YAML 或 JSON 格式,并且必须保存为 pm2.config.yaml 或 pm2.config.json 文件。其中,YAML 格式的文件更加简洁和易读,但是需要注意缩进和冒号的使用等细节;而 JSON 格式的文件则更加严谨和标准化,但是需要注意分号和括号的使用等细节。
以下是一个简单的 PM2 配置文件的示例,其中包含了应用程序的名称、启动命令、环境变量和进程数量等信息:
name: my-app script: ./src/index.js env: NODE_ENV: production instances: 2
配置文件的常用属性和参数
name
name 属性指定了应用程序的名称,是 PM2 管理应用程序时的一个关键标识。建议使用短小、简明的名称,并尽量避免使用特殊字符和中文等。
script
script 属性指定了应用程序的启动命令或脚本路径,是 PM2 启动应用程序时的关键参数。可以是通过 npm 或 yarn 安装的 Node.js 模块名称,也可以是本地文件系统中的脚本路径,甚至还可以是远程 Git 仓库的 HTTPS 或 SSH 地址。
# 启动本地脚本 script: ./src/index.js # 启动 npm 模块 script: npm start # 启动 Git 仓库 script: git+https://github.com/user/repo.git
args
args 属性指定了应用程序启动命令的附加参数,主要用于传递一些动态、可变的参数或选项。可以是字符串或数组格式,通过空格或逗号进行分隔。
# 启动时传递参数 args: --port 8080 --debug # 通过数组指定参数 args: - --port - 8080
env
env 属性是一个对象类型,用于指定应用程序运行时所需的环境变量。这些环境变量可以是系统级的或自定义的变量,以键值对的形式表示。
# 设置环境变量 env: NODE_ENV: production DB_HOST: localhost
log
log 属性用于指定应用程序的日志配置,主要包括日志文件路径、日志级别、日志滚动方式等。
// www.javascriptcn.com code example # 指定日志文件及级别 log: path: ./logs/app.log level: error # 指定日志滚动方式及保留天数 log: type: "json" rotateInterval: "1d" maxFiles: 7
instances
instances 属性用于指定应用程序的进程数量,当该属性值大于 1 时,PM2 会根据进程数量启动多个进程,实现应用程序的负载均衡和高可用。
# 启动 2 个进程 instances: 2
watch
watch 属性用于指定应用程序的文件变动监控配置,PM2 可以自动监测应用程序文件的变化并进行重启操作,从而实现代码更新和热部署等功能。
# 监控所有 .js 和 .json 文件 watch: ["src/*.js", "config/*.json"]
配置文件的应用和指导
PM2 的配置文件可以根据具体的应用场景和需求进行灵活的调整和优化。通过合理地配置文件中的各项参数和属性,可以实现更加可靠、高效和稳定的 Node.js 应用程序部署和管理,提高开发和运维效率。
在实际应用中,可以通过 Git 管理和版本控制 PM2 的配置文件,以便于团队协作和审核。同时,为了保证配置文件的安全性和机密性,建议对敏感信息进行加密或以其他形式存储,以避免信息泄露和攻击风险。
示例代码
以下是一个完整的 PM2 配置文件的示例,包含了多项属性和参数的配置。
// www.javascriptcn.com code example name: my-app script: ./src/index.js args: ["--host", "localhost", "--port", "3000"] env: NODE_ENV: production DB_HOST: localhost instances: 2 watch: ["src/*.js", "config/*.json"] log: path: ./logs/app.log level: error logrotate: max_size: 10M retain: 7
该示例中,应用程序的名称为 my-app,启动命令为 ./src/index.js,附加参数为 --host localhost --port 3000,使用了 production 环境和 localhost 数据库,启动了 2 个进程,监测了 src/*.js 和 config/*.json 文件的变化,并将日志文件保存在 ./logs/app.log,仅记录 error 级别以上的日志,并支持日志文件滚动,最多保留 7 天数据。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67bd659fa231b2b7edfc261a