什么是 PM2?
PM2 是一个流行的 Node.js 进程管理器,它可以帮助我们启动、停止、重启和监控 Node.js 进程。PM2 还提供了许多有用的功能,如负载均衡、自动重启、日志管理等。
为什么要使用 PM2 配置文件?
PM2 默认情况下可以自动监控和重启 Node.js 进程,但是如果我们需要更高级的功能,比如指定环境变量、设置最大内存限制等,就需要使用 PM2 配置文件。使用 PM2 配置文件可以让我们更灵活、更方便地管理 Node.js 进程。
PM2 配置文件示例
以下是一个 PM2 配置文件的示例:
-- -------------------- ---- ------- -------------- - - ---- - -- ---- - -------- ------ - ----------- ---- - --------- ------------- ------------- --------------------------- -- -------------- - - --------- ------------ -- ---------- ------ ---------- ---------- ------------------- ----- ---------------- ----------- -------- --- ----------- ----- ----------- ------------------- --------- ---------------- -- -
配置文件详解
apps
apps
是一个数组,每个元素代表一个 Node.js 进程。可以在一个 PM2 配置文件中同时管理多个进程。在上面的示例中,我们只有一个进程,它的名称是 myapp
,启动的脚本是 ./app.js
。
name
name
属性用于指定进程的名称。这个名称将在 PM2 的日志中显示。在上面的示例中,我们将进程命名为 myapp
。
script
script
属性用于指定进程的启动脚本。在上面的示例中,我们的启动脚本是 ./app.js
。
env
env
属性是一个对象,用于设置环境变量。这些变量将会被传递给 Node.js 进程。在上面的示例中,我们设置了两个环境变量:NODE_ENV
和 DATABASE_URL
。
env_production
env_production
属性也是一个对象,它用于设置生产环境下的环境变量。当使用 pm2 start app.js --env production
启动应用程序时,这些变量将会被传递给 Node.js 进程。在上面的示例中,我们只设置了一个环境变量 NODE_ENV
。
instances
instances
属性用于设置进程的数量。可以将其设置为数字或字符串 "max"
,表示使用所有可用的 CPU 核心。在上面的示例中,我们将 instances
设置为 "max"
。
exec_mode
exec_mode
属性用于指定 PM2 进程模式。可以将其设置为 "fork"(默认模式)
或 "cluster"
。在上面的示例中,我们将 exec_mode
设置为 "cluster"
。
max_memory_restart
max_memory_restart
属性用于指定应用程序超过多少内存时,PM2 将自动重启 Node.js 进程。可以将其设置为数字或字符串,例如 "1G"
。在上面的示例中,我们将 max_memory_restart
设置为 "1G"
。
log_date_format
log_date_format
属性用于指定 PM2 日志文件的日期格式。可以使用 Moment.js 的日期格式。在上面的示例中,我们将 log_date_format
设置为 "YYYY-MM-DD HH:mm:ss Z"
。
merge_logs
merge_logs
属性用于指定是否将不同进程的日志合并。如果将其设置为 true
,则所有进程的日志将合并,并且在一个日志文件中输出。在上面的示例中,我们将 merge_logs
设置为 true
。
error_file
error_file
属性用于指定 PM2 错误日志文件的路径。在上面的示例中,我们将错误日志文件放在 ./logs/error.log
。
out_file
out_file
属性用于指定 PM2 正常输出日志文件的路径。在上面的示例中,我们将日志文件放在 ./logs/out.log
。
总结
PM2 配置文件可以帮助我们更灵活、更方便地管理 Node.js 进程。在配置文件中,我们可以指定环境变量、设置进程数量、指定日志文件路径等。在实际的项目中,我们可以根据需要设置不同的配置文件,并根据环境变量来选择不同的配置文件。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f1bcf1f6b2d6eab3b9496c