PM2
是一个 Node.js 应用的生产环境进程管理器,而 yarn run start
是一个 通过 Yarn 运行项目脚本的命令。两者属于不同的工具,但常在 Node.js 项目部署中配合使用。以下是详细解释:
PM2(Process Manager 2) 是一个专为 Node.js 设计的进程管理工具,用于在生产环境中保持应用持续运行、自动重启崩溃的进程、负载均衡等。它的核心功能包括:
功能 | 说明 |
---|---|
进程守护 | 保持应用长期运行,即使崩溃或服务器重启也会自动恢复。 |
负载均衡 | 多实例运行(集群模式),充分利用多核 CPU。 |
日志管理 | 集中管理应用日志,支持日志轮转和远程查看。 |
零停机重启 | 更新代码时无需停机,逐步重启进程(reload 命令)。 |
监控与性能分析 | 实时监控资源占用(CPU、内存等),提供性能分析工具。 |
pm2 start app.js # 启动应用
pm2 list # 查看运行中的进程
pm2 logs # 查看日志
pm2 restart app_name # 重启应用
pm2 stop app_name # 停止应用
pm2 delete app_name # 删除进程
yarn run start
是什么?这是通过 Yarn(JavaScript 包管理器)运行项目中定义的 start
脚本的命令。它的行为取决于项目根目录下的 package.json
文件中 scripts
字段的配置。例如:
package.json
配置{
"scripts": {
"start": "node server.js", # 定义 start 脚本为运行 node server.js
"dev": "nodemon server.js" # 开发环境脚本(通常带热重载)
}
}
yarn run start
时,Yarn 会调用 node server.js
启动应用。yarn run start
的关系两者通常结合使用,但角色不同:
yarn run start
:
是开发或部署时启动应用的命令,具体行为由 package.json
定义(如 node server.js
或 react-scripts start
)。yarn run start
(或其他方式)启动的应用,确保其稳定运行。直接运行 yarn run start
(或 node server.js
)的问题:
PM2 的解决方案:
pm2 start server.js -i max
)。yarn run start
可以单独使用:
在开发环境中直接运行即可,但生产环境建议用 PM2 托管。假设项目结构如下:
my-app/
├── package.json
└── server.js
yarn install # 安装依赖
yarn run start # 启动应用(执行 package.json 中的 "start" 脚本)
pm2 start yarn --name "my-app" --interpret "yarn run start"
# 或更直接的方式:
pm2 start server.js --name "my-app" --watch # 监听文件变化自动重启
pm2 list # 查看进程状态
pm2 logs my-app # 查看日志
pm2 restart my-app # 重启应用
pm2 save # 保存当前进程列表到配置文件
pm2 startup # 设置开机自启