利用Jenkins实现java-cms项目自动化上线及回滚(七)

Jenkins实现cms项目自动部署

1.环境准备

ip服务
192.168.81.210gitlab
192.168.81.220Jenkins
192.168.81.230nginx-lb
192.168.81.230mysql
192.168.81.240tomcat+nginx
192.168.81.250tomcat+nginx

2.实现cms项目手动上线

2.1.准备项目代码

1.下载项目代码并解压
https://gitee.com/lxhu_work/wangmarket
[root@gitlab ~]# git clone https://gitee.com/lxhu_work/wangmarket.git
[root@gitlab ~]# mkdir cms
[root@gitlab ~]# unzip wangmarket.zip -d cms

2.2.项目推送至gitlab

2.2.1.新建一个cms项目

在这里插入图片描述

2.2.2.推送代码到gitlab
[root@gitlab cms]# git init
[root@gitlab cms]# git remote add origin git@gitlab.jiangxl.com:root/cms.git
[root@gitlab cms]# git add .
[root@gitlab cms]# git commit -m "首次提交"
[root@gitlab cms]# git push orgin master

在这里插入图片描述

2.3.手动拉取cms项目代码

Jenkins服务器操作
[root@jenkins data_gitlab]# git clone git@gitlab.jiangxl.com:root/cms.git

2.4.导入数据库的sql语句

1.安装mysql5.7,mysql服务器操作
[root@nginxlb mysql]# rpm -ivh http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm
[root@nginxlb mysql]# yum install mysql-community-server -y
		
2)创建数据库		mysql服务器操作
[root@nginxlb mysql]# mysql -uroot -p1234.com
mysql> create database wangmarket;
Query OK, 1 row affected (0.13 sec)

mysql> show database;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wangmarket         |
+--------------------+
4 rows in set (0.07 sec)

3)授权root远程登录
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

4)导入sql
[root@jenkins else]# vim wangmarket.sql
use wangmarket;			#增加这一行
[root@jenkins else]# cat wangmarket.sql | mysql -h192.168.81.230 -uroot -p1234.com

在这里插入图片描述

2.5.修改数据库的连接信息

修改数据库信息	Jenkins服务器操作
[root@jenkins cms]# vim src/main/resources/application.properties 
database.name=wangmarket
database.ip=192.168.81.230
spring.datasource.username=root
spring.datasource.password=1234.com

[root@jenkins cms]# cp src/main/resources/application.properties /opt/	
cp这个文件是为了自动化上线的时候使用的

2.6.使用maven进行编译

使用clean跳过test步骤
[root@jenkins cms]# mvn clean package -Dmaven.test.skip\=true 
······
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4:47.653s
[INFO] Finished at: Sun Sep 06 16:29:56 CST 2020
[INFO] Final Memory: 35M/214M
[INFO] ------------------------------------------------------------------------

[root@jenkins cms]# ls target/*.war
target/wangmarket.war

2.7.将war包拷贝至web集群并启动tomcat

1.推送war包
[root@jenkins cms]# for i in 240 250
> do
> scp target/*.war root@192.168.81.${i}:/application/tomcat/webapps/ROOT.war
> done


2.重启tomcat
[root@jenkins cms]# for i in 240 250
> do
> ssh root@192.168.81.${i} "pkill java && sh /application/tomcat/bin/startup.sh"
> done
Tomcat started.
Tomcat started.

2.8.配置nginx ip_hash

[root@nginxlb mysql]# vim /etc/nginx/conf.d/proxy_java.conf
upstream hello {
        ip_hash;
        server 192.168.81.240:80;
        server 192.168.81.250:80;
}

server {
        listen 80;
        server_name tomcat.jiangxl.com;
        location / {
                proxy_pass http://hello;
                proxy_set_header HOST $http_host;
        }
}

2.9.安装cms

点击安装

在这里插入图片描述

免费版

在这里插入图片描述

设置参数

在这里插入图片描述

管理后台

在这里插入图片描述

2.10登录网址后台

http://tomcat.jiangxl.com/login.do
账号密码:wangzhan

登录系统

在这里插入图片描述

项目部署成功

在这里插入图片描述

在这里插入图片描述

3.实现cms项目自动上线

整体步骤

1.Jenkinsid拉取代码

2.Jenkins配置构建前操作—将数据库配置文件拷贝至源码中

3.Jenkins调用maven进行编译

4.Jenkins调用shell,将war包推送至web集群,重启tomcat

5.用户测试访问

3.1.新建一个maven cms项目

在这里插入图片描述

3.2.配置Jenkins拉取标签参数

在这里插入图片描述

3.3.配置Jenkins拉取gitlab代码

指定分支填写刚刚的git parameters的变量名
在这里插入图片描述

3.4.构建前配置数据信息

将手动上线那会cp到/opt目录的配置文件在使用cp的方式移动到源码包中

如果刚刚没有做现在也可以做
[root@jenkins ~]# cp /data_gitlab/cms/src/main/resources/application.properties /script/

首先在gitlab中将配置文件删除,因为每次构建的环境不同,有的是正式环境,有的是测试环境,数据库信息是不一样的,因此在构建前我们就将适合本次环境的配置文件拷贝过来。

将gitlab上的数据库配置文件删除

[root@gitlab cms]# rm -rf src/main/resources/application.properties 
[root@gitlab cms]# git rm src/main/resources/application.properties
[root@gitlab cms]# git add .
[root@gitlab cms]# git commit -m "rm app.pro"
[root@gitlab cms]# git push origin master

在构建前配置中将数据库信息文件拷贝至源码中

cd ${WORKSPACE}
/usr/bin/cp /script/application.properties src/main/resources/

在这里插入图片描述

3.5.设置构建参数

在这里插入图片描述

3.6.设置构建脚本

脚本使用之前构建helloword项目的脚本即可

[root@jenkins ~]# vim /script/java_deploy_rollback_tag.sh 
#!/bin/bash
Date=`date +%F-%H-%M`
monitor_dir=/var/lib/jenkins/workspace/freestyle-monitor
web_server="192.168.81.240 192.168.81.250"
NAME=${Date}-${git_version}
war_dir=/opt/ROOT-${NAME}
war_pack=/opt/ROOT-${NAME}.war
war_root=/application/tomcat/webapps

jenkins_work () {
        cd ${WORKSPACE}
}

scp_war(){
        for host in $web_server
        do
                scp -r target/*.war root@${host}:${war_pack}
                ssh root@$host "mkdir -p $war_dir && \
                                unzip ${war_pack} -d ${war_dir} && \
                                rm -rf ${war_pack} && \
                                rm -rf ${war_root}/ROOT* && \
                                ln -s $war_dir $war_root/ROOT && \
                                pkill java && \
                                sh /application/tomcat/bin/startup.sh"
        done
}

rollback () {
        for host in ${web_server}
        do
                back_file=$(ssh root@${host} "find /opt -maxdepth 1 -type d -name "ROOT-*${git_version}*"")
                ssh root@${host} "rm -rf ${war_root}/* && \
                                  ln -s $back_file $war_root/ROOT && \
                                  pkill java && \
                                  sh /application/tomcat/bin/startup.sh"
        done
}

deploy(){
        jenkins_work
        scp_war
}

if [ $deploy_env == "deploy" ];then
        if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then
                echo "该 ${git_version} 已经构建过了,无需再进行构建!!!"
        else
                deploy
        fi
elif [ $deploy_env == "rollback" ];then
        rollback
fi

在这里插入图片描述

3.7.构造标签

构建v1.1标签

1.修改项目代码
[root@gitlab cms]# vim src/main/webapp/WEB-INF/view/iw_update/login/login.jsp 
<%=Global.get("SITE_NAME") %> jiangxl 平台登陆 v1.1

2.推送代码到gitlab
[root@gitlab cms]# git add .
[root@gitlab cms]# git commit -m "v1.1"
[root@gitlab cms]# git push origin master

3.推送标签
[root@gitlab cms]# git tag -a v1.1 -m "v1.1"
[root@gitlab cms]# git push origin v1.1 

构建v1.2标签

1.修改项目代码
[root@gitlab cms]# vim src/main/webapp/WEB-INF/view/iw_update/login/login.jsp 
<%=Global.get("SITE_NAME") %> jiangxl 平台登陆 v1.2

2.推送代码到gitlab
[root@gitlab cms]# git add .
[root@gitlab cms]# git commit -m "v1.2"
[root@gitlab cms]# git push origin master

3.推送标签
[root@gitlab cms]# git tag -a v1.2 -m "v1.2"
[root@gitlab cms]# git push origin v1.2 

在这里插入图片描述

3.8.配置tomcat支持项目软链接

[root@web01 ~]# vim /application/tomcat/conf/context.xml 
<Context>
<Resources allowLinking="true" />
</Context>

重启tomcat
[root@web02 ~]# pkill java
[root@web02 ~]# sh /application/tomcat/bin/startup.sh 

3.9.自动构建v1.1版本

自动构建

在这里插入图片描述

控制台输出
在这里插入图片描述

3.10.访问cms项目并进行安装

在这里插入图片描述

安装完进行访问
 http://127.0.0.1:8080/login.do
 账号密码都是wangzhan

出现了我们做的v1.1版本

在这里插入图片描述

在这里插入图片描述

3.11.构建v.1.2版本

构建v1.2版本

在这里插入图片描述

控制台输出

在这里插入图片描述

安装完进行访问
 http://127.0.0.1:8080/login.do
 账号密码都是wangzhan
 完成安装后就看到了我们部署的1.2版本

在这里插入图片描述

3.12.回退至v1.1版本

点击构建

在这里插入图片描述
控制台输出

构建成功

20200907233406073

回退成功

在这里插入图片描述

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
1. 上线前的备份工作: 按日期生成上线记录文件夹 文件结构目录和正式环境保持一致 备份你所涉及到的修改文件 2. 上线前的准备工作: 把你修改到的patch文件 到 PATCH_ROOT 目录中 文件结构目录和正式环境保持一致 3. 上线工作: diff -r -b 比较 备份环境 和 发布环境 文件差异; 再次确定修改是否正确 PATCH_ROOT 下的文件夹和文件 发布到正式环境 即可; 完成上线后,要检查系统功能是否正确。 4. 回滚工作: BAK_ROOT 下的文件夹和文件 回滚到正式环境 即可 ; 完成回滚后 要检查系统功能是否正确回滚。 5. shell脚本功能: === 参数配置 ===: #指定正式环境的路径 正式环境的文件 WEB_ROOT=/var/www/html echo ${WEB_ROOT} #指定发布环境的路径 发布环境的文件 PAT_ROOT=/home/chenlong/blog echo ${PAT_ROOT} #指定发布管理日志的路径 记录发布过程,完成文件备份和文件patch PUB_ROOT=/home/chenlong/Publish === 使用方法 ===: #./apply.sh blog /home/chenlong/patch_sh/list20100520.txt 例如 -bash-3.2$ ./apply.sh blog /home/chenlong/patch_sh/list20100520.txt /var/www/html /home/chenlong/blog /home/chenlong/Publish blog /home/chenlong/patch_sh/list20100520.txt /home/chenlong/patch_sh === cmd === :/home/chenlong/patch_sh/apply_cp.sh /var/www/html/wp-includes/js/common.js /home/chenlong/Publish/blog/2010-05-21/bak /bin/cp /var/www/html/wp-includes/js/common.js /home/chenlong/Publish/blog/2010-05-21/bak/var/www/html/wp-includes/js/common.js === cmd === :/home/chenlong/patch_sh/apply_cp.sh /var/www/html/upload_editor.php /home/chenlong/Publish/blog/2010-05-21/bak /bin/cp /var/www/html/upload_editor.php /home/chenlong/Publish/blog/2010-05-21/bak/var/www/html/upload_editor.php === cmd === :/home/chenlong/patch_sh/apply_cp.sh /var/www/html/BM/Tpl/default/Admin/Img/index.php /home/chenlong/Publish/blog/2010-05-21/bak /bin/cp /var/www/html/BM/Tpl/default/Admin/Img/index.php /home/chenlong/Publish/blog/2010-05-21/bak/var/www/html/BM/Tpl/default/Admin/Img/index.php === cmd === :/home/chenlong/patch_sh/apply_cp.sh /home/chenlong/blog/wp-includes/js/common.js /home/chenlong/Publish/blog/2010-05-21/patch /bin/cp /home/chenlong/blog/wp-includes/js/common.js /home/chenlong/Publish/blog/2010-05-21/patch/home/chenlong/blog/wp-includes/js/common.js === cmd === :/home/chenlong/patch_sh/apply_cp.sh /home/

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jiangxl~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值