PM2 是一款广泛使用的进程管理器,它能帮助开发者管理和保持应用程序的在线状态,而Jenkins则是一款开源的自动化服务器,用于自动化各种任务,包括构建、测试和部署应用程序。使用Jenkins部署PM2管理的Express Node.js应用涉及到设置Jenkins作业、安装Node.js环境、配置PM2以及编写部署脚本。具体来说,主要步骤包括在Jenkins中创建一个新作业、配置源代码管理、编写构建和部署脚本、以及监控应用启动情况。以下是部署的关键步骤的详细描述。
一、配置JENKINS环境
部署开始之前,确保Jenkins环境已配置正确。首先,需要在Jenkins服务器上安装Node.js和PM2。通常,这可以通过使用Node Version Manager (NVM)安装Node.js并通过npm安装PM2来实现。在Jenkins内部,还需要为构建作业配置Node.js环境,这通常通过"Global Tool Configuration"部分完成。
安装Node.js插件和PM2:
- 在Jenkins的"Manage Jenkins" > "Manage Plugins"中,安装NodeJS插件。
- 安装完成后进入"Global Tool Configuration",添加Node.js的安装配置,确保Node.js和npm可用。
- 在终端或命令行中全局安装PM2:
npm install pm2 -g
。
二、创建和配置JENKINS作业
创建一个新作业的第一步是在Jenkins仪表板上选取"New Item"。创建作业时,可以选择"Freestyle project"作为作业类型。
- 配置源代码管理:根据项目存储的位置,选择合适的源代码管理选项(Git、SVN等),输入仓库URL和认证信息。
- 配置构建触发器:根据需要配置触发器,比如可以选择"Poll SCM"按一定频率检查源代码变动。
三、编写构建和部署脚本
构建和部署是整个持续集成过程的核心。Jenkins作业配置中有一个"Build"部分,需要在此部分中添加执行shell脚本或bat脚本来运行构建和部署命令。
-
编写构建脚本:
- 安装项目依赖:
npm install
或者yarn install
。 - 运行测试:
npm test
(如果有必要)。 - 构建应用(如需构建前端资源):
npm run build
。
- 安装项目依赖:
-
编写部署脚本:
- 使用PM2停止旧进程:
pm2 stop app-name
(如果应用已经运行)。 - 使用PM2启动新进程:
pm2 start app.js --name "app-name"
。 - (可选)配置环境变量:通过–env选项指定不同环境的配置文件。
- 监控应用启动:
pm2 status
查看应用运行状态。
- 使用PM2停止旧进程:
脚本示例:
cd path-to-your-app
npm install # 安装依赖
npm run test # 运行测试
npm run build # 构建应用
pm2 reload ecosystem.config.js --env production # 重载应用
四、管理和监控应用进程
使用Jenkins构建和部署应用后,重要的一步是确保应用以期望的方式运行。借助PM2,可以非常容易地进行这种监控。
-
查看日志:
pm2 logs app-name
查看实时日志。pm2 logs app-name --lines 1000
查看最新的1000行日志。
-
负载均衡和零停机部署:
pm2 reload app-name
进行零停机重新加载(如果配置了cluster mode)。
五、配置ECOSYSTEM.CONFIG.JS
为了方便地管理和部署,可以使用PM2的ecosystem.config.js
文件来配置应用进程。这个文件允许你定义运行应用所需的参数,如环境变量、日志文件路径、实例数量等。
在ecosystem.config.js
文件中配置:
- apps部分中设定脚本路径、环境变量等。
- deploy部分中设定部署相关的配置,如仓库地址、分支等。
module.exports = {
apps : [{
name : 'API',
script : 'app.js',
env: {
NODE_ENV: 'development',
},
env_production : {
NODE_ENV: 'production'
}
}],
deploy : {
production : {
user : 'node',
host : 'XXX.XXX.XXX.XXX',
ref : 'origin/master',
repo : 'git@repository.git',
path : '/path/to/server',
'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',
}
}
};
利用这个文件可以在Jenkins的部署脚本中简化命令,例如使用pm2 deploy ecosystem.config.js production
即可完成部署。
六、PM2高级特性和最佳实践
PM2提供许多高级功能,比如模块系统、不同的应用模式(fork、cluster)等。为了充分利用PM2,以下是一些最佳实践。
- 利用cluster模式以充分利用多核CPU:
pm2 start app.js -i max
(其中max代表根据CPU核心数自动决定实例数量)。 - 确保日志轮转以避免日志文件太大:
pm2 install pm2-logrotate
并配置。 - 使用PM2内置的监控工具查看CPU和内存使用情况:
pm2 monit
。
七、JENKINS和PM2安全性考虑
在部署的时候,还需要关注安全性问题。
-
管理认证信息:
- 使用Jenkins凭证存储。
- 使用环境变量或ecosystem文件中的加密变量配置敏感信息。
-
保持软件更新:
- 定期更新Jenkins、Node.js、PM2等工具以修复安全漏洞。
以上步骤为在Jenkins中通过PM2部署和管理Express Node.js应用的基本指南,其中包含构建、部署和监控的关键步骤。通过这些步骤可以实现自动化部署和高效的应用管理。
相关问答FAQs:
如何在Jenkins中部署使用pm2管理的Express Node.js应用程序?
-
我需要安装哪些插件以在Jenkins中部署pm2管理的Express Node.js应用程序?
- 在Jenkins上安装Node.js插件以支持Node.js应用程序的构建和部署。
- 安装Node.js插件后,在Jenkins的全局配置中指定你的Node.js安装路径。
- 可以使用pm2插件来安装和管理pm2进程守护程序。
-
我应该如何配置Jenkins以便部署pm2管理的Express Node.js应用程序?
- 创建一个新的Jenkins项目并选择"构建一个自由风格的软件项目"选项。
- 在源代码管理中选择你的代码存储库(如Git或Subversion)。
- 在构建环境中,选择"Provide Node & npm bin/ folder to PATH"选项,以便在构建过程中使用Node.js和npm命令。
- 在构建步骤中,使用npm命令安装项目依赖并构建应用程序。
- 然后,使用pm2相关命令(如pm2 start或pm2 restart)启动或重新启动应用程序。
-
如何在Jenkins中实现自动部署pm2管理的Express Node.js应用程序?
- 使用Webhook来触发Jenkins项目的自动构建。
- 在你的代码存储库中配置Webhook,当有新的代码推送至存储库时,会自动触发Jenkins的构建过程。
- 在Jenkins项目中,配置一个触发条件,使其当接收到Webhook请求时自动触发构建。
- 这样,每当有新的代码推送至存储库时,Jenkins会自动构建并部署pm2管理的Express Node.js应用程序。