使用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,如需转载请自行联系原作者

相关文章
|
6月前
|
JavaScript 前端开发 Python
Node.js在Python中的应用实例demo
Node.js在Python中的应用实例demo
|
6月前
|
jenkins 持续交付 数据安全/隐私保护
企业实战(23)基于Docker平台的Jenkins凭据管理与应用(4)
企业实战(23)基于Docker平台的Jenkins凭据管理与应用(4)
|
6月前
|
JavaScript 前端开发 API
Node.js在Python中的应用实例解析
Node.js在Python中的应用实例解析
|
7月前
|
存储 JavaScript NoSQL
使用Node.js构建强大的后端应用程序
Node.js是一个基于Chrome V8引擎构建的JavaScript运行时环境,它可以帮助开发者构建快速、可扩展和高性能的后端应用程序。在本篇文章中,我们将介绍一些与Node.js相关的技术,让你更好地利用这个强大的工具。
116 0
|
6月前
|
Web App开发 缓存 JavaScript
Node.js 应用高 CPU 占用率的分析方法
Node.js 应用高 CPU 占用率的分析方法
116 0
|
4月前
|
负载均衡 JavaScript 算法
Node.js 多进程的概念、原理、优势以及如何使用多进程来提高应用程序的性能和可伸缩性
Node.js 多进程的概念、原理、优势以及如何使用多进程来提高应用程序的性能和可伸缩性
41 1
|
11天前
|
存储 JavaScript 前端开发
Angular 应用 node_modules 子文件夹 @types 的作用介绍
Angular 应用 node_modules 子文件夹 @types 的作用介绍
12 1
|
1月前
|
Web App开发 JavaScript 前端开发
深入浅出:Node.js 在后端开发中的应用与实践
【2月更文挑战第13天】本文旨在探讨Node.js这一流行的后端技术如何在现代Web开发中被应用以及它背后的核心优势。通过深入分析Node.js的非阻塞I/O模型、事件驱动机制和单线程特性,我们将揭示其在处理高并发场景下的高效性能。同时,结合实际开发案例,本文将展示如何利用Node.js构建高性能、可扩展的后端服务,以及在实际项目中遇到的挑战和解决方案。此外,我们还将讨论Node.js生态系统中的重要工具和库,如Express.js、Koa.js等,它们如何帮助开发者快速搭建和部署应用。通过本文的探讨,读者将获得对Node.js在后端开发中应用的深入理解,以及如何有效利用这一技术来提升开发效率
|
1月前
|
JavaScript 前端开发
node.js第四天--ajax在项目中的应用
node.js第四天--ajax在项目中的应用
26 0
|
7月前
|
JavaScript API
Node.js 应用 peer dependency 的用法
Node.js 应用 peer dependency 的用法
59 0