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

首页 / 常见问题 / 低代码开发 / jenkins 如何部署 pm2 管理的 express Node.js
作者:低代码开发平台 发布时间:01-05 20:03 浏览量:6954
logo
织信企业级低代码开发平台
提供表单、流程、仪表盘、API等功能,非IT用户可通过设计表单来收集数据,设计流程来进行业务协作,使用仪表盘来进行数据分析与展示,IT用户可通过API集成第三方系统平台数据。
免费试用

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应用程序。
最后建议,企业在引入信息化系统初期,切记要合理有效地运用好工具,这样一来不仅可以让公司业务高效地运行,还能最大程度保证团队目标的达成。同时还能大幅缩短系统开发和部署的时间成本。特别是有特定需求功能需要定制化的企业,可以采用我们公司自研的企业级低代码平台织信Informat。 织信平台基于数据模型优先的设计理念,提供大量标准化的组件,内置AI助手、组件设计器、自动化(图形化编程)、脚本、工作流引擎(BPMN2.0)、自定义API、表单设计器、权限、仪表盘等功能,能帮助企业构建高度复杂核心的数字化系统。如ERP、MES、CRM、PLM、SCM、WMS、项目管理、流程管理等多个应用场景,全面助力企业落地国产化/信息化/数字化转型战略目标。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系邮箱:hopper@cornerstone365.cn 处理,核实后本网站将在24小时内删除。

最近更新

为什么很多人宁愿 excel 贼 6,也不愿意去用 python
01-07 14:14
C#程序如何调用Python程序
01-07 14:14
python 编程如何实现条件编译
01-07 14:14
为什么可以用CMD安装Python的第三方库
01-07 14:14
如何线上部署用python基于dlib写的人脸识别算法
01-07 14:14
Python 的 Tuple 怎么使用
01-07 14:14
python 的 Task 如何封装协程
01-07 14:14
怎么用Python进行变形监测时间序列数据的小波分析
01-07 14:14
linux 系统环境下 python 多版本间切换的方法有哪些
01-07 14:14

立即开启你的数字化管理

用心为每一位用户提供专业的数字化解决方案及业务咨询

  • 深圳市基石协作科技有限公司
  • 地址:深圳市南山区科技中一路大族激光科技中心909室
  • 座机:400-185-5850
  • 手机:137-1379-6908
  • 邮箱:sales@cornerstone365.cn
  • 微信公众号二维码

© copyright 2019-2024. 织信INFORMAT 深圳市基石协作科技有限公司 版权所有 | 粤ICP备15078182号

前往Gitee仓库
微信公众号二维码
咨询织信数字化顾问获取最新资料
数字化咨询热线
400-185-5850
申请预约演示
立即与行业专家交流