使用Jenkins自动部署nodejs应用 (转载)

简介:

想必部署过nodejs应用的朋友都有过这样的经历:

1、通过ssh登录服务器

2、进入nodejs目录

3、执行:git pull 命令拉取最新代码

4、执行:npm install 安装新依赖

5、执行:pm2 restart all 重新启动所有nodejs进程

如果我们只有一台机器,并且更新不是很频繁,似乎这样的操作还是可以接受,但是如果我们有4台nodejs应用的服务器,每次的代码改动将是灾难!

好在我们有Jenkins帮助我们做这些事情,Jenkins是一个可以自动远程部署,执行远程脚本命令的工具,它被称为持续集成工具,我们可以通过docker来快速搭建一个Jenkins服务。

 

一、安装docker,拉取images,启动container

 

在centos7下,只需要执行

1
2
3
yum  install  docker
service docker start
ps  -ef| grep  docker

在centos6下,需要分别执行

1
2
3
4
5
yum  install  sudo
sudo  yum  install  -y epel-release
sudo  yum  install  -y docker-io
service docker start
ps  -ef| grep  docker

 

进入 jenkins 的官方docker镜像地址:

https://registry.hub.docker.com/_/jenkins/

然后根据说明执行:

1
docker pull jenkins

拉取好镜像之后,我们先创建目录,然后启动docker的container

1
2
mkdir  /var/jenkins_home
docker run -d --name myjenkins -p 49001:8080 - v  /var/jenkins_home : /var/jenkins_home  jenkins

 

二、安装nginx

安装并启动nginx,把如下代码放在配置文件中,添加一个server节点,反向代理到docker

1
2
3
4
5
6
7
8
9
10
11
upstream app {
     server 127.0.0.1:49001;
}
server {
     listen 80;
     server_name jenkins.your-domain.com;
 
     location / {
         proxy_pass http: //app ;
     }
}

这样打开浏览器我们就可以看到jenkins的首页了

三、配置jinkens

我们首先需要进入jinkens添加用户,这里不累述了,根据提示一步步即可完成。

然后我们要安装插件,依次进入:

系统管理 -> 插件管理 -> 高级(选项卡)-> 底部立即获取按钮

 稍等片刻,就可以把可用插件更新下来,然后我们选择安装如下几个插件:

1
2
3
4
5
6
7
8
GIT client plugin
GIT plugin
Git server plugin
GitHub API Plugin
GitHub plugin
SSH Credentials Plugin
SSH plugin
Publish Over SSH

安装完成后,重新启动 jenkins。如果无法自动重启,可以输入 '/restart' 在地址栏,即可手动重启。

四、添加remote计算机

我们jenkins是安装在docker中的,所以就算部署到本机,对于jenkins也是remote外部的机器,需要使用ssh来连接,我们需要添加ssh主机,来让jenkins联入。

依次进入  系统管理 -> 系统设置

如下图增加remote server,这个是增加ssh remote 插件的服务器

 

下图是增加远程拷贝文件的remote server

 

 

五、创建项目

我现在在github上建了一个nodejs的helloworld项目:

https://github.com/DoubleSpout/jenkinsNodejs

我们需要在jenkins中也创建一个相应的项目来,依次点击:新建 ->  取名为 nodejsPublish

 进入项目,点击配置,我们就可以对这个项目进行配置,让它自动部署

1、设置 git 仓库路径:

如下图,因为是公共仓库,所以不需要验证用户名,密码:

 

2、构建完毕之后,将代码打包保存

我们先如下图,增加一个构建完毕的shell脚本执行

然后些如下图脚本,打包代码,然后移动到workspace目录下

3、接着我们需要连接到部署服务器上,将原来的服务暂时暂停,删除上一次部署的压缩包,选择添加远程shell脚本执行,如下图:

 

写如下脚本,将pm2服务停止,这里大家可以根据自己的要求暂停脚本

 4、最后我们要把打包好的代码发送到服务器上,然后执行安装依赖包操作,并且启动nodejs服务,选择通过ssh发送文件并执行命令到远程服务器,如图:

 下图的 source files 的默认当前路径就是workspaces,remote directory的当前路径就是之前添加服务器设置的,这里我设置为 /var/nodejs

下面的命令很简单,解压代码,执行依赖包安装,然后通过pm2启动nodejs服务。

 

5、开始构建

配置好上述命令之后,我们点击保存,然后点击立即构建,出现蓝色的球,就表示构建成功,红色的球表示构建失败,黄色的球表示执行构建命令失败,如下图,就是正在构建和发布:

 

 

不论构建成功还是失败,我们可以通过查看控制台输出看到构建的结果:

 

如果我们有多台设备,就只需要配置一次,然后以后每次有代码变更,手动点击立即构建即可自动部署到目标服务器,免去我们枯草的重复劳动。当然其他语言,例如python,php都是可以这样来部署的。

 


本文转自 zbill 51CTO博客,原文链接:http://blog.51cto.com/dek701/1966929,如需转载请自行联系原作者

相关文章
|
12天前
|
JavaScript 开发者
深入理解Node.js事件循环及其在后端开发中的应用
【8月更文挑战第57天】本文将带你走进Node.js的事件循环机制,通过浅显易懂的语言和实例代码,揭示其背后的工作原理。我们将一起探索如何高效利用事件循环进行异步编程,提升后端应用的性能和响应速度。无论你是Node.js新手还是有一定经验的开发者,这篇文章都能给你带来新的启发和思考。
|
1月前
|
JavaScript API 数据库
深入理解Node.js事件循环及其在后端开发中的应用
【9月更文挑战第3天】本文将深入浅出地介绍Node.js的事件循环机制,探讨其非阻塞I/O模型和如何在后端开发中利用这一特性来处理高并发请求。通过实际的代码示例,我们将看到如何有效地使用异步操作来优化应用性能。文章旨在为读者揭示Node.js在后端开发中的核心优势和应用场景,帮助开发者更好地理解和运用事件循环来构建高性能的后端服务。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的图像识别技术深入理解Node.js事件循环及其在后端开发中的应用
【8月更文挑战第27天】本文将介绍深度学习中的图像识别技术,包括其原理、应用领域及未来发展。我们将探讨如何通过神经网络实现图像识别,并分析其在医疗、交通等领域的应用。最后,我们将展望图像识别技术的发展前景。
|
2月前
|
运维 Cloud Native JavaScript
云端新纪元:云原生技术深度解析深入理解Node.js事件循环及其在异步编程中的应用
【8月更文挑战第27天】随着云计算技术的飞速发展,云原生已成为推动现代软件开发和运维的关键力量。本文将深入探讨云原生的基本概念、核心价值及其在实际业务中的应用,帮助读者理解云原生如何重塑IT架构,提升企业的创新能力和市场竞争力。通过具体案例分析,我们将揭示云原生技术背后的哲学思想,以及它如何影响企业决策和操作模式。
|
2月前
|
JavaScript 开发者
深入理解Node.js事件循环及其在后端开发中的应用
【8月更文挑战第31天】 本文将带你走进Node.js的事件循环机制,通过浅显易懂的语言和实例代码,揭示其背后的工作原理。我们将一起探索如何高效利用事件循环进行异步编程,提升后端应用的性能和响应速度。无论你是Node.js新手还是有一定经验的开发者,这篇文章都能给你带来新的启发和思考。
|
2月前
|
jenkins 测试技术 持续交付
Jenkins 在多分支项目中的应用
【8月更文第31天】在现代软件开发实践中,分支管理是一项至关重要的策略,它允许开发团队在不同的功能开发、修复bug或进行实验时不会干扰主干代码。随着项目的复杂度增加,维护多个分支并确保它们的质量变得越来越具有挑战性。Jenkins 作为一款流行的持续集成(CI)和持续部署(CD)工具,提供了强大的功能来支持多分支项目的自动化测试和部署。本文将探讨 Jenkins 如何帮助管理多分支项目,并提供具体的代码示例。
26 0
|
2月前
|
jenkins Java 测试技术
Jenkins 在持续集成/持续交付(CI/CD)管道中的应用
【8月更文第31天】 在现代软件开发过程中,持续集成(Continuous Integration, CI)和持续交付(Continuous Delivery, CD)已经成为提升开发效率和软件质量的重要实践。Jenkins 是一个广泛使用的开源工具,它能够帮助团队实现自动化构建、测试和部署,是 CI/CD 流水线的核心组件之一。本文将详细介绍 Jenkins 在 CI/CD 管道中的应用,并提供具体的代码示例。
57 0
|
2月前
|
JavaScript 前端开发 API
深入理解Node.js事件循环及其在后端开发中的应用
【8月更文挑战第29天】本文将深入浅出地介绍Node.js事件循环机制,并结合代码示例探讨其如何影响后端开发实践。我们将从事件循环的基本概念出发,逐步解析其工作原理和性能优化策略,旨在帮助开发者更好地理解和运用Node.js进行高效的后端开发。
|
2月前
|
JSON JavaScript 中间件
深入浅出Node.js后端开发之Express框架应用
【8月更文挑战第29天】本文将带领读者快速了解并掌握使用Express框架进行Node.js后端开发的基础和进阶知识。我们将一起探索Express的安装、基本使用方法,并通过实际代码示例学习如何搭建一个简单的Web服务器。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
2月前
|
JavaScript Linux
【Azure App Service for Linux】NodeJS镜像应用启动失败,遇见 RangeError: Incorrect locale information provided
【Azure App Service for Linux】NodeJS镜像应用启动失败,遇见 RangeError: Incorrect locale information provided