想必部署过nodejs应用的朋友都有过这样的经历:php
一、经过ssh登陆服务器
二、进入nodejs目录
三、执行:git pull 命令拉取最新代码
四、执行:npm install 安装新依赖
五、执行:pm2 restart all 从新启动全部nodejs进程
若是咱们只有一台机器,而且更新不是很频繁,彷佛这样的操做仍是能够接受,可是若是咱们有4台nodejs应用的服务器,每次的代码改动将是灾难!
好在咱们有Jenkins帮助咱们作这些事情,Jenkins是一个能够自动远程部署,执行远程脚本命令的工具,它被称为持续集成工具,咱们能够经过docker来快速搭建一个Jenkins服务。
1、安装docker,拉取images,启动container
在centos7下,只须要执行
yum install docker
service docker start
ps -ef|grep docker
在centos6下,须要分别执行node
yum install sudo
sudo yum install -y epel-release
sudo yum install -y docker-io
service docker start
ps -ef|grep docker
进入 jenkins 的官方docker镜像地址:
而后根听说明执行:
拉取好镜像以后,咱们先建立目录,而后启动docker的containerpython
mkdir /var/jenkins_home
docker run -d --name myjenkins -p 49001:8080 -v /var/jenkins_home:/var/jenkins_home jenkins
2、安装nginx
安装并启动nginx,把以下代码放在配置文件中,添加一个server节点,反向代理到docker
upstream app {
server 127.0.0.1:49001;
}
server {
listen 80;
server_name jenkins.your-domain.com;
location / {
proxy_pass http://app;
}
}
这样打开浏览器咱们就能够看到jenkins的首页了nginx
3、配置jinkens
咱们首先须要进入jinkens添加用户,这里不累述了,根据提示一步步便可完成。
而后咱们要安装插件,依次进入:
系统管理 -> 插件管理 -> 高级(选项卡)-> 底部当即获取按钮
稍等片刻,就能够把可用插件更新下来,而后咱们选择安装以下几个插件:
GIT client plugin
GIT plugin
Git server plugin
GitHub API Plugin
GitHub plugin
SSH Credentials Plugin
SSH plugin
Publish Over SSH
安装完成后,从新启动 jenkins。若是没法自动重启,能够输入 '/restart' 在地址栏,便可手动重启。git
4、添加remote计算机
咱们jenkins是安装在docker中的,因此就算部署到本机,对于jenkins也是remote外部的机器,须要使用ssh来链接,咱们须要添加ssh主机,来让jenkins联入。
依次进入 系统管理 -> 系统设置
以下图增长remote server,这个是增长ssh remote 插件的服务器
下图是增长远程拷贝文件的remote server
5、建立项目
我如今在github上建了一个nodejs的helloworld项目:
咱们须要在jenkins中也建立一个相应的项目来,依次点击:新建 -> 取名为 nodejsPublish
进入项目,点击配置,咱们就能够对这个项目进行配置,让它自动部署
一、设置 git 仓库路径:
以下图,由于是公共仓库,因此不须要验证用户名,密码:
二、构建完毕以后,将代码打包保存
咱们先以下图,增长一个构建完毕的shell脚本执行
而后些以下图脚本,打包代码,而后移动到workspace目录下
三、接着咱们须要链接到部署服务器上,将原来的服务暂时暂停,删除上一次部署的压缩包,选择添加远程shell脚本执行,以下图:
写以下脚本,将pm2服务中止,这里你们能够根据本身的要求暂停脚本
四、最后咱们要把打包好的代码发送到服务器上,而后执行安装依赖包操做,而且启动nodejs服务,选择经过ssh发送文件并执行命令到远程服务器,如图:
下图的 source files 的默认当前路径就是workspaces,remote directory的当前路径就是以前添加服务器设置的,这里我设置为 /var/nodejs
下面的命令很简单,解压代码,执行依赖包安装,而后经过pm2启动nodejs服务。
五、开始构建
配置好上述命令以后,咱们点击保存,而后点击当即构建,出现蓝色的球,就表示构建成功,红色的球表示构建失败,黄色的球表示执行构建命令失败,以下图,就是正在构建和发布:
不论构建成功仍是失败,咱们能够经过查看控制台输出看到构建的结果:
若是咱们有多台设备,就只须要配置一次,而后之后每次有代码变动,手动点击当即构建便可自动部署到目标服务器,免去咱们枯草的重复劳动。固然其余语言,例如python,php都是能够这样来部署的。