PM2 部署配置
PM2 不仅仅是一个进程管理工具,它还为 Node.js 应用提供了完整的部署配置选项,帮助开发者自动化部署、管理环境变量以及优化生产环境的配置。通过配置 ecosystem.config.js 文件,开发者可以轻松地管理部署流程、执行自动化操作并确保应用的高可用性。
1. ecosystem.config.js 配置文件
ecosystem.config.js 文件是 PM2 用来管理应用部署和进程配置的核心文件。它包含了应用的启动脚本、环境变量、部署设置等信息。该文件使得部署和管理多个环境变得更加简便。
基本结构
module.exports = {
apps: [
{
name: 'my-app', // 应用名称
script: './app.js', // 启动脚本
instances: 1, // 启动实例数,适用于单机模式
exec_mode: 'cluster', // 使用集群模式(支持负载均衡)
env: {
NODE_ENV: 'development', // 开发环境变量
},
env_production: {
NODE_ENV: 'production', // 生产环境变量
},
watch: true, // 监控文件变动,自动重启应用
autorestart: true, // 启用应用崩溃自动重启
max_memory_restart: '200M', // 当应用使用内存超过 200MB 时自动重启
},
],
};
`
配置说明
- name:应用的名称。
- script:启动应用的文件路径。
- instances:指定应用的实例数,适用于多核 CPU 环境。
- exec_mode:指定应用的执行模式,
cluster模式适用于负载均衡,fork模式适用于单实例。 - env:开发环境的环境变量。
- env_production:生产环境的环境变量,应用启动时根据环境变量切换。
- watch:启用文件监控,文件变动时自动重启应用。
- autorestart:启用应用崩溃自动重启功能。
- max_memory_restart:内存使用超过指定值时,自动重启应用。
2. 配置部署设置
在 ecosystem.config.js 中,PM2 也支持应用的部署配置。你可以通过配置 deploy 部分来管理应用的自动化部署过程,包括代码拉取、依赖安装和应用重启。
部署配置示例
module.exports = {
apps: [
{
name: 'my-app',
script: './app.js',
env_production: {
NODE_ENV: 'production',
},
},
],
deploy: {
production: {
user: 'deploy', // 部署服务器的用户名
host: ['your-server.com'], // 目标服务器的 IP 地址或域名
ref: 'origin/master', // Git 仓库的分支
repo: '[email protected]:yourusername/your-repo.git', // Git 仓库的地址
path: '/var/www/my-app', // 应用在服务器上的目标路径
'pre-deploy': 'echo "Preparing for deployment..."', // 部署前执行的脚本
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production', // 部署后执行的脚本
},
},
};
配置说明
- user:指定在服务器上的用户(通常是
deploy用户)。 - host:列出目标服务器的 IP 地址或域名。
- ref:指定 Git 分支,通常为
origin/master。 - repo:Git 仓库的地址,PM2 会从这个仓库拉取代码。
- path:应用部署到目标服务器上的路径。
- pre-deploy:部署前需要执行的命令或脚本,可以用于初始化环境。
- post-deploy:部署后执行的命令,通常用于安装依赖和重启应用。
3. 自动化部署流程
通过配置 deploy 部分,PM2 使得自动化部署变得简单。你可以使用以下命令来执行不同的部署步骤:
部署命令
- 初始化部署环境:
pm2 deploy ecosystem.config.js production setup
该命令会在服务器上设置部署环境,克隆 Git 仓库到指定路径,并创建所需的目录结构。
- 更新应用代码:
pm2 deploy ecosystem.config.js production update
该命令会拉取最新的代码更新并同步到目标服务器。
- 重启应用:
pm2 deploy ecosystem.config.js production restart
该命令会在应用代码更新后重启应用,确保新的代码生效。
完整部署流程
- 使用
setup命令初始化服务器环境。 - 使用
update命令拉取最新代码并安装依赖。 - 使用
restart命令重启应用,确保应用使用最新的代码。
4. 配置服务器环境变量
在生产环境中,除了配置 NODE_ENV 之外,你可能还需要设置其他环境变量,如数据库连接信息、API 密钥等。可以在 ecosystem.config.js 文件中配置不同环境下的环境变量。
示例:生产环境环境变量配置
module.exports = {
apps: [
{
name: 'my-app',
script: './app.js',
env_production: {
NODE_ENV: 'production',
DB_HOST: 'your-database-host',
DB_USER: 'your-database-user',
DB_PASSWORD: 'your-database-password',
},
},
],
};
在这个配置中,我们为生产环境添加了 DB_HOST、DB_USER 和 DB_PASSWORD 等环境变量,这些变量可以在应用中被访问并用于数据库连接。
5. 总结
PM2 的部署配置功能提供了强大的支持,能够帮助开发者轻松管理多个环境和部署流程。通过合理配置 ecosystem.config.js 文件,开发者可以在生产环境中管理环境变量、自动化部署、安装依赖和重启应用。PM2 还支持与 Git 集成,自动化拉取代码更新,并通过简单的命令实现完整的部署流程,极大简化了 Node.js 应用的部署和管理。
相关内容
- PM2 崩溃恢复 了解 PM2 的崩溃恢复机制,掌握如何配置进程崩溃后的自动重启,以保证 Node.js 应用在遇到异常时能够快速恢复,保持高可用性和稳定性。
- PM2 重启策略 了解 PM2 的重启策略,掌握如何根据不同的需求配置自动重启规则,如内存限制、时间限制、重启次数等,确保 Node.js 应用在异常时能自动恢复,保持高可用性。
- PM2 集群模式的优势 了解使用 PM2 集群模式的优势,如何通过负载均衡、多进程管理和高可用性提升 Node.js 应用的性能、稳定性和容错性。
- PM2 启动集群 学习如何通过 PM2 启动集群模式,以充分利用服务器的多核 CPU 提升 Node.js 应用的性能。PM2 集群模式提供了负载均衡、高可用性和自动恢复的功能,...
- PM2 应用部署 了解如何使用 PM2 进行 Node.js 应用的部署,掌握常见的部署方式、配置管理和自动化部署流程,确保应用能够在生产环境中高效、稳定地运行。
- PM2 自动化流程 掌握如何使用 PM2 配置自动化部署流程,利用 Git 集成和自定义部署脚本,实现应用的持续集成与持续部署(CI/CD),确保代码快速、安全地部署到生产环境。