pm2

PM2 是一个流行的进程管理器,用于 Node.js 应用程序。它支持应用程序的负载均衡、自动重启、日志管理、监控以及多环境管理等功能。PM2让开发者能够以守护进程的方式运行和管理 Node.js 应用,即使在应用崩溃或服务器重启后也能自动重启应用。这使得 PM2非常适合在生产环境中部署 Node.js 应用。除此之外,PM2还支持应用的零停机更新,以及对 Docker 容器的支持。

安装

执行以下命令来全局安装 PM2。全局安装意味着你可以在任何地方运行 PM2命令。

1
npm install pm2 -g

这条命令会将 PM2安装到你的系统上,-g 参数表示全局安装,这样你就可以在任何目录下使用 PM2命令。
安装完成后,你可以运行以下命令来检查 PM2是否正确安装:

1
pm2 --version

常用命令

命令 描述 使用实例及参数
start 启动应用 pm2 start app.js
pm2 start app.js -i 4 --name myApp
pm2 start app.js --watch
stop 停止应用 pm2 stop app.js
pm2 stop 0
pm2 stop all
restart 重启应用 pm2 restart app.js
pm2 restart all
delete 删除应用 pm2 delete app.js
pm2 delet 0
pm2 delete all
list 列出所有应用 pm2 list
monit 监控应用 pm2 monit
logs 查看应用日志 pm2 logs
pm2 logs app.js
pm2 logs --lines 100
save 保存当前应用列表 pm2 save
reload 重载应用 pm2 reload app.js
pm2 reload all
scale 调整集群模式下的实例数量 pm2 scale app +1
pm2 scale app 4
describe 查看应用详细信息 pm2 describe 0
update 更新PM2守护进程 pm2 update
status 查看应用状态 pm2 status
flush 清空所有日志文件 pm2 flush
startup 创建开机自启动脚本` pm2 startup
unstartup 删除开机自启动脚本 pm2 unstartup

配置文件

PM2的配置文件通常被称为ecosystem.config.js,这是一个 JavaScript 文件,允许你配置和管理应用程序的多个方面。通过使用配置文件,你可以轻松地指定环境变量、日志文件路径、实例数量等,并且可以一次性启动多个应用。下面详细介绍如何使用 PM2配置文件。
基本结构
PM2的ecosystem.config.js文件基本结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
module.exports = {
apps: [
{
name: "app1", // 应用程序名称
script: "./app.js", // 主脚本路径
args: "arg1 arg2", // 传递给脚本的参数
instances: 4, // 应用实例数
autorestart: true, // 自动重启
watch: false, // 监控文件变动
max_memory_restart: "1G", // 内存超过1G 重启
env: {
// 环境变量
NODE_ENV: "development",
},
env_production: {
// 生产环境变量
NODE_ENV: "production",
},
},
{
name: "app2",
script: "./app2.js",
// 其他配置...
},
],
};

主要字段解释

  • apps: 一个数组,包含了你要运行的应用的配置对象。
  • name: 应用程序的名称。
  • script: 应用程序的启动脚本或文件。
  • args: 传递给脚本的参数。
  • instances: 启动应用实例的数量。对于无状态的应用,可以设置为max以根据 CPU 核心数量来启动最大实例数。
  • autorestart: 如果应用崩溃或者停止,是否自动重启。
  • watch: 是否启用文件监控和自动重启。
  • max_memory_restart: 当应用超过指定内存量时自动重启。
  • env: 在这个对象中,你可以指定传递给应用的环境变量。这些环境变量在所有环境下都会加载。
  • env_production: 你可以为不同的环境指定不同的环境变量。

使用配置文件
1.启动应用: 使用配置文件启动应用时,运行如下命令:

1
pm2 start ecosystem.config.js

2.指定环境: 如果你有为不同环境定义的变量,可以在启动时指定:

1
pm2 start ecosystem.config.js --env production

这将使用env_production中定义的环境变量。
3.管理应用: 一旦应用启动,你可以使用 PM2的标准命令来管理它们,例如pm2 stop, pm2 restart, 和pm2 delete。

配置文件为应用部署提供了强大而灵活的管理方式,特别是当你需要部署多个应用或需要为应用指定特定的环境变量和配置时。通过精心设计的配置文件,你可以确保应用的部署更加一致和可预测。