传统网站部署的流程

在运维过程中,网站部署是运维的工作之一。传统的网站部署的流程大致分为:需求分析->原型设计->开发代码->提交代码->内网部署->内网测试->确认上线一>备份数据->外网更新->外网测试->发布完成。如果在内网测试时发现代码有异常,返回代码开发人员名字,调整代码:如果在外网测试时发现外网部署的代码有异常,可以及时进行网站回滚。

传统代码上线的过程

开发人员发起代码上线的需求(邮件中包含开发做好的WAR包)-->运维人员连接线上负载调度器(Nginx)一>隔离一组服务器(Tomcat)->连接服务器(Tomcat)-->备份旧代码(tar打包)-->删除旧代码目录-->上传新的 WAR包->外网测试->测试不通过则通过备份回滚代码->测试通过则利用rsync的脚本推送代码到其他服务器一>统一外网测试一>连接调度器恢复隔离机制一>隔离另一组服务器实施上线步骤一>上线完成

目前主流网站部署的流程

目前主流网站部署方法:通过Hudson/Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,属于开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用。

开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVN, Git仓库即可。

运维人员:减轻人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份、更新等操作。

测试人员:可以通过Jenkins进行简单的代码及网站测试。

Jenkins.的工作原理是先将源代码从SVN/Git版本控制系统中拷贝一份到本地,然后根据设置的脚本进行build (构建) 。整个系统的关键就是build脚本, build脚本告诉Jenkins在一次集成中需要执行的任务。

一、实验环境

Git                   192.168.200.71

Jenkins               192.168.200.72

Tomcat            192.168.200.73

二、关闭安全机制

[root@jenkins ~]# systemctl stop firewalld
[root@jenkins ~]# iptables -F
[root@jenkins ~]# setenforce 0

三:安装jenkins

1、配置环境

[root@localhost ~]# hostname jenkins
[root@localhost ~]# bash
[root@jenkins ~]# systemctl stop firewalld
[root@jenkins ~]# iptables -F
[root@jenkins ~]# setenforce 0

2、安装依赖包

[root@jenkins ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

[root@jenkins ~]# java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
3、安装Jenkins
[root@jenkins ~]# rz
[root@jenkins ~]# ls
anaconda-ks.cfg          jenkins-2.205-1.1.noarch.rpm  
[root@jenkins ~]# rpm -ivh jenkins-2.205-1.1.noarch.rpm
[root@jenkins ~]# /etc/init.d/jenkins start
Starting jenkins (via systemctl):                          [  确定  ]
[root@jenkins ~]# netstat -lnpt | grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      59807/java
jenkins必须安装Publish Over SSH和Maven Integration插件
四:安装git
1、配置环境
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# iptables -F
[root@localhost ~]# hostname git
[root@localhost ~]# bash
2、安装git
[root@git ~]# yum -y install git
3、创建用户
[root@git ~]# useradd git
[root@git ~]# echo "123456" | passwd --stdin git
4、创建本地仓库
[root@git ~]# su - git
[git@git ~]$ mkdir probe.git
[git@git ~]$ cd probe.git/
[git@git probe.git]$ git --bare init
初始化空的 Git 版本库于 /home/git/probe.git/
[git@git probe.git]$ exit
登出
#克隆项目代码同步到自己创建的仓库中#
[root@git ~]# git clone https://github.com/psi-probe/psi-probe
[root@git ~]# git clone git@192.168.200.71:/home/git/probe.git
[root@git ~]# cp -rf psi-probe/* probe/
[root@git ~]# cd probe/
[root@git probe]# git add .
[root@git probe]# git config --global user.email "xingxin@163.com"
[root@git probe]# git config --global user.name "xingxing"
[root@git probe]# git commit -m "all probe"
[root@git probe]# git push origin master
 
 
 
五、配置jenkins
1、修改初始密码

 2、配置并发数

用于提高执行效率

Manage jenkins --> Configure -->Maven项目配置

3、配置邮箱地址

在测试完成后,主动发送邮件告知测试情况

Manage Jenkins -->ConfigureSystem-->Jenkins Location

#添加域

#添加凭据

在Tomcat机上创建目录

 六、配置Jenkins的aven、JDK、Git环境

配置JDk

[root@jenkins ~]# tar xf jdk-8u191-linux-x64.tar.gz
[root@jenkins ~]# mv jdk1.8.0_191/ /usr/local/java

[root@jenkins ~]# vim /etc/profile

export JAVA_HOME=/usr/local/java/
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH

[root@jenkins ~]# rm -rf /usr/bin/java

[root@jenkins ~]# source /etc/profile
[root@jenkins ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

 配置Maven环境

[root@jenkins ~]# tar xf apache-maven-3.5.0-bin.tar.gz
[root@jenkins ~]# mv apache-maven-3.5.0 /usr/local/maven-3.5.0
[root@jenkins ~]# vim /usr/local/maven-3.5.0/conf/settings.xml

<mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>

Git环境配置

[root@jenkins ~]# which git
/usr/bin/git

 

七、web服务器配置

[root@web ~]# ls
anaconda-ks.cfg    
apache-tomcat-8.5.16.tar.gz  jdk-8u191-linux-x64.tar.gz

[root@web ~]# tar xf apache-tomcat-8.5.16.tar.gz
[root@web ~]# tar xf jdk-8u191-linux-x64.tar.gz
[root@web ~]# mv jdk1.8.0_191/ /usr/local/java
[root@web ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat

[root@web ~]# vim /etc/profile

[root@web ~]# rm -rf /usr/bin/java
[root@web ~]# source /etc/profile
[root@web ~]# java -version
java version "1.8.0_191"

发布公钥给jenkins主机

[root@web ~]# ssh-keygen

[root@web ~]# ssh-copy-id 192.168.200.72

八、新建Maven项目

如果在创建项目时缺少“构建一个Maven项目“这个选项,尝试下载插件

点击“可选插件”  然后在右边的过滤输入框中输入搜索关键字: Maven Integration  或者 Pipeline Maven Integration  ,搜索到了以后,点击直接安装

主机jenkins默认使用jenkins用户去连接git,所以jenkins用户生成密钥对,并发送给git

[root@jenkins ~]# su -s /bin/bash jenkins
bash-4.2$ ssh-keygen

bash-4.2$ ssh-copy-id git@192.168.200.71

bash-4.2$ ssh git@192.168.200.71
Last login: Fri Nov 22 14:25:03 2019

配置Build

target/dist/**/*

/usr/local/tomcat/webapps/

scp 192.168.200.72:/var/lib/jenkins/workspace/probe/web/target/probe.war /usr/local/tomcat/webapps/ /usr/local/tomcat/bin/startup.sh

 控制台输出

九、验证Jenkins自动打包部署结果

从以上结果来看,jenkins以及把打包好的probe war包拷贝过来了

而且通过Tomcat自动解压好了,Tomcat也已经重新启动了,可以通过浏览器访问测试probe监控系统。

http://192.168.200.73:8080/probe

基于jenkins自动打包并部署Tomcat环境的更多相关文章

  1. 基于jenkins自动打包并部署docker环境

    一.实验环境 git                      192.168.200.71 jenkins    192.168.200.72 docker               192.16 ...

  2. 基于jenkins自动打包并部署docker环境及PHP环境

  3. Jenkins自动打包并部署(以java -jar形势运行)

    1.打包 与平常maven项目打包一致,不再赘述 2.杀死原有进程 通过 pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` 获取当前 ...

  4. Android Jenkins自动打包纪录

    关于Jenkins自动打包Android的apk包,网上官方的太多,这里简单纪录一下博主的经历和打包的参数纪录 (本篇文章需要对Jenkins有最基本的基础了解) 博主所在公司曾负责app测试过程中发 ...

  5. Net 项目构建基于Jenkins + Github + Mono 的持续集成环境

    Net 项目构建基于Jenkins + Github + Mono 的持续集成环境 阅读目录 1 安装 2 配置 3 测试 在Redhat enterprise 6.5 的服务器上,为在gutub 上 ...

  6. Jenkins自动打包配置

    当时也是花费了不少时间来配置Jenkins自动打包的问题,觉得还是需要记录一下. 1.安装Jenkins,这个很简单,不需要多说. 2.下载Git Plugin,Gradle Plugin,Andro ...

  7. 部署Tomcat 环境

    部署Tomcat 环境(mysql+tomcat+jdk) 1.下载Tomcat 软件包 2.通过xftp创建root 连接,然后将Tomcat 软件包拖拽到/opt目录下 3.在xshell 上ro ...

  8. 基于Jenkins自动构建系统开发

    1  绪论 1.1 课题的研究背景 随着IT行业的不断发展,软件开发的复杂度也随着不断提高.与此同时,软件的开发团队也越来越庞大,而如何更好地协同整个团队进行高效准确的工作,从而确保软件开发的质量已经 ...

  9. jenkins+php+svn快速部署测试环境开发环境快速部署

    jenkins 虽然作为java常用的打包部署工具,不过也可以使用在phpweb项目部署管理,前段时间帮公司部署了开发环境与测试环境,简单分享一下. 1.内网web环境搭建lnmp,centos下编译 ...

随机推荐

  1. SWUST OJ1065 无向图的连通分量计算

    无向图的连通分量计算 5000(ms) 10000(kb) 2555 / 5521 假设无向图G采用邻接矩阵存储,编写一个算法求连通分量的个数. 输入 第一行为一个整数n,表示顶点的个数(顶点编号为0 ...

  2. STM32F103ZET6外部中断

    1.EXTI功能 外部中断/事件控制器EXTI管理了STM32的20个中断/事件线. EXTI的功能框图如下: 在功能框图中,可以看到很多在信号线上打了一个斜杠并标注“20”的字样,这是表示在STM3 ...

  3. python--内建属性、集合、常见模块、调试

    一.常用内建属性 常用专有属性 说明 触发方式 __init__ 构造初始化函数 创建实例后,赋值时使用,在__new__后 __new__ 生成实例所需属性 创建实例时 __class__ 实例所在 ...

  4. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之八(四十四)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  5. 对Web语义化的思考。

    很有意思的HTML语义化 在昨天和做SEO的同学聊了一会儿,当然我没有学会搜索引擎优化的技巧和知识,但在此之前一直对HTML5中header.footer.sidebar.article等标签嗤之以鼻 ...

  6. Eclipse(Eclipse for android)代码自动提示设置

    java代码和xml资源代码在有的eclipse中可以自己提示,但有的并不支持这个功能,还得我们人为去调整,主要原因是因为你们下载的elipse的渠道不同,获得的版本有的官方原版,有的是个人备份版等等 ...

  7. HTTP协议经典面试题整理及答案详解

    无论你是Java.PHP开发者,还是运维人员,只要从事互联网行业,面试时都可能被问到HTTP协议相关知识.历时多天的呕心沥血,为你总结了HTTP协议的经典面试题.由于涉及内容比较繁杂不方便记忆,建议收 ...

  8. canal使用记录

    canal是阿里巴巴的来源项目.我们可以通过配置binlog实现数据库监控,得到数据库表或者数据的更新信息.参考我的文档前先去官网看下,可能已经支持更高版本的MySQL了 1. 查看官方开源项目 ht ...

  9. 刨根问底系列(1)——虚假唤醒(spurious wakeups)的原因以及在pthread_cond_wait、pthread_cond_singal中使用while的必要性

    刨根问底之虚假唤醒 1. 概要 将会以下方式展开介绍: 什么是虚假唤醒 什么原因会导致虚假唤醒(两种原因) 为什么系统内核不从根本上解决虚假唤醒这个"bug"(两个原因) 开发者如 ...

  10. Spring温习(1)--最基础的示例

    Spring温习(1)--最基础的示例 博客分类: 框架-Spring专栏 SpringXMLBeanWebDAO 从现在开始,我将从Spring为起点,逐步复习几大框架各方面的知识,以便今后查看使用 ...