通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

jenkins 如何部署 pm2 管理的 express Node.js

jenkins 如何部署 pm2 管理的 express Node.js

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

  1. 在Jenkins的"Manage Jenkins" > "Manage Plugins"中,安装NodeJS插件。
  2. 安装完成后进入"Global Tool Configuration",添加Node.js的安装配置,确保Node.js和npm可用。
  3. 在终端或命令行中全局安装PM2:npm install pm2 -g

二、创建和配置JENKINS作业

创建一个新作业的第一步是在Jenkins仪表板上选取"New Item"。创建作业时,可以选择"Freestyle project"作为作业类型。

  1. 配置源代码管理:根据项目存储的位置,选择合适的源代码管理选项(Git、SVN等),输入仓库URL和认证信息。
  2. 配置构建触发器:根据需要配置触发器,比如可以选择"Poll SCM"按一定频率检查源代码变动。

三、编写构建和部署脚本

构建和部署是整个持续集成过程的核心。Jenkins作业配置中有一个"Build"部分,需要在此部分中添加执行shell脚本或bat脚本来运行构建和部署命令。

  1. 编写构建脚本

    • 安装项目依赖:npm install或者yarn install
    • 运行测试:npm test(如果有必要)。
    • 构建应用(如需构建前端资源):npm run build
  2. 编写部署脚本

    • 使用PM2停止旧进程:pm2 stop app-name(如果应用已经运行)。
    • 使用PM2启动新进程:pm2 start app.js --name "app-name"
    • (可选)配置环境变量:通过–env选项指定不同环境的配置文件。
    • 监控应用启动:pm2 status查看应用运行状态。

脚本示例:

cd path-to-your-app

npm install # 安装依赖

npm run test # 运行测试

npm run build # 构建应用

pm2 reload ecosystem.config.js --env production # 重载应用

四、管理和监控应用进程

使用Jenkins构建和部署应用后,重要的一步是确保应用以期望的方式运行。借助PM2,可以非常容易地进行这种监控。

  1. 查看日志

    • pm2 logs app-name查看实时日志。
    • pm2 logs app-name --lines 1000查看最新的1000行日志。
  2. 负载均衡和零停机部署

    • 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,以下是一些最佳实践。

  1. 利用cluster模式以充分利用多核CPUpm2 start app.js -i max(其中max代表根据CPU核心数自动决定实例数量)。
  2. 确保日志轮转以避免日志文件太大pm2 install pm2-logrotate并配置。
  3. 使用PM2内置的监控工具查看CPU和内存使用情况:pm2 monit

七、JENKINS和PM2安全性考虑

在部署的时候,还需要关注安全性问题。

  1. 管理认证信息

    • 使用Jenkins凭证存储。
    • 使用环境变量或ecosystem文件中的加密变量配置敏感信息。
  2. 保持软件更新

    • 定期更新Jenkins、Node.js、PM2等工具以修复安全漏洞。

以上步骤为在Jenkins中通过PM2部署和管理Express Node.js应用的基本指南,其中包含构建、部署和监控的关键步骤。通过这些步骤可以实现自动化部署和高效的应用管理。

相关问答FAQs:

如何在Jenkins中部署使用pm2管理的Express Node.js应用程序?

  1. 我需要安装哪些插件以在Jenkins中部署pm2管理的Express Node.js应用程序?

    • 在Jenkins上安装Node.js插件以支持Node.js应用程序的构建和部署。
    • 安装Node.js插件后,在Jenkins的全局配置中指定你的Node.js安装路径。
    • 可以使用pm2插件来安装和管理pm2进程守护程序。
  2. 我应该如何配置Jenkins以便部署pm2管理的Express Node.js应用程序?

    • 创建一个新的Jenkins项目并选择"构建一个自由风格的软件项目"选项。
    • 在源代码管理中选择你的代码存储库(如Git或Subversion)。
    • 在构建环境中,选择"Provide Node & npm bin/ folder to PATH"选项,以便在构建过程中使用Node.js和npm命令。
    • 在构建步骤中,使用npm命令安装项目依赖并构建应用程序。
    • 然后,使用pm2相关命令(如pm2 start或pm2 restart)启动或重新启动应用程序。
  3. 如何在Jenkins中实现自动部署pm2管理的Express Node.js应用程序?

    • 使用Webhook来触发Jenkins项目的自动构建。
    • 在你的代码存储库中配置Webhook,当有新的代码推送至存储库时,会自动触发Jenkins的构建过程。
    • 在Jenkins项目中,配置一个触发条件,使其当接收到Webhook请求时自动触发构建。
    • 这样,每当有新的代码推送至存储库时,Jenkins会自动构建并部署pm2管理的Express Node.js应用程序。
相关文章