目录

基于Jenkins自动打包并部署Tomcat环境

基于上一章创建部署 Linux下Jenkins安装 (最新)_学习新鲜事物的博客-CSDN博客

传统网站部署的流程

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

传统代码上线的过程

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

目前主流网站部署的流程

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

  1. 开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在 SVN、Git 仓库即可。
  2. 运维人员:减轻人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份、更新等操作。
  3. 测试人员:可以通过 Jenkins 进行简单的代码及网站测试。

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

实验环境

|----------------------------|---------------|----------------|------------|
| 操作系统 | IP地址 | 主机名 | 角色 |
| CentOS 7.5 | 192.168.50.51 | git | git服务器 |
| CentOS 7.5 | 192.168.50.53 | Jenkins git客户端 | jenkins服务器 |
| CentOS 7.5 | 192.168.50.54 | tomcat | web服务器 |

所有主机关闭防火墙和selinux

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

1、配置git

git和Jenkins都要安装

root@git \~\]# yum -y install git \[root@jemkins \~\]# yum -y install git

在git端配置用户

root@git \~\]# useradd git \[root@git \~\]# echo "123456" \| passwd --stdin git 更改用户 git 的密码 。 passwd:所有的身份验证令牌已经成功更新。 \[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 \~\]# rz \[root@git \~\]# tar xf psi-probe.tar.gz \[root@git \~\]# git clone git@192.168.50.51:/home/git/probe.git 正克隆到 'probe'... git@192.168.50.51's password: warning: 您似乎克隆了一个空版本库。 \[root@git \~\]# cp -rf psi-probe/\* probe/ \[root@git \~\]# cd probe/ \[root@git probe\]# git add . \[root@git probe\]# git commit -m "all probe" \[root@git probe\]# git push origin master git@192.168.50.51's password: Counting objects: 1168, done. Delta compression using up to 2 threads. Compressing objects: 100% (1121/1121), done. Writing objects: 100% (1168/1168), 2.01 MiB \| 0 bytes/s, done. Total 1168 (delta 397), reused 0 (delta 0) To git@192.168.50.51:/home/git/probe.git \* \[new branch\] master -\> master

2、配置jenkins主机

1)添加验证凭据 :凭证这里添不添加都可以,这个试验不牵扯到凭证

在凭据页面中,点击"system"跳转到"系统"页面。点击左侧导航栏中"添加域",

跳转到"添加域"页面。在该页面创建域名为"crushlinux"并点击"ok"完成配置。

"添加凭据"。

web主机用户名密码

填写以上数据后,点击"确定"就可以查看到新增的远程 web 主机账号。

2)添加 Publish Over SSH 远程主机

在 Jenkins 首页中点击"Manage Jenkins"->"Configure System"->"Publish over SSH"->"SSH Servers"->"增加"选项按钮,添加 SSH 远程主机。如图 3.13 所示,输入 Name、Hostname、Username 等必要信息后,点击"高级"选项按钮->勾选"Use Password authentication,or use a different key"选项->输入"远程主机登录密码"->"Test Configuration"测试远程主机配置。测试远程主机配置成功后点击"保存"按钮即可。

在 最下面

web服务器

3)配置 Maven、JDK、Git 环境

在 Jenkins 首页中点击"Manage Jenkins"->"Global Tool Configuration"->"JDK" ->新增"JDK",设置 JDK 别名为"JDK11"。去掉"Install automatically"选项,设置 "JAVA_HOME"为本案例中 JDK 实际安装路径。

Git 配置

root@jemkins \~\]# which git /usr/bin/git ![](https://file.jishuzhan.net/article/1696549246964076545/f3fb8a73cb5a48a6b6c05c267fa756b3.png)

在Jenkins安装maven

root@jemkins \~\]# tar xf apache-maven-3.5.0-bin.tar.gz \[root@jemkins \~\]# mv apache-maven-3.5.0 /usr/local/maven-3.5.0 \[root@jemkins \~\]# vim /usr/local/maven-3.5.0/conf/settings.xml > 146 \ > 147 \ > 148 \nexus-aliyun\ > 149 \central\ > 150 \Nexus aliyun\ > 151 \http://maven.aliyun.com/nexus/content/groups/public\ > 152 \ > > 153 \ > > ![](https://file.jishuzhan.net/article/1696549246964076545/865ca453d61642e69c24d917da83adf8.png) > > 最后达到效果 刚刚界面中找到 Maven 配置选项,然后点击"新增 Maven"并设置别名为"Maven3.5"。 ![](https://file.jishuzhan.net/article/1696549246964076545/0e983ce3b389438cb5c3c0499343d7aa.png) 以上全局基本配置完毕后,点击保存即可完成。 ## ******3、配置web主机****** > \[root@tomcat \~\]# tar xf apache-tomcat-8.5.40.tar.gz > > \[root@tomcat\~\]# mv apache-tomcat-8.5.40 /usr/local/tomcat java包可能会有问题所以还是下载好 > \[root@tomcat \~\]# sudo yum install java-1.8.0-openjdk-devel > > \[root@tomcat \~\]# vim /etc/profile > > export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk/ > > export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar > > export PATH=$JAVA_HOME/bin:$PATH > > \[root@tomcat \~\]# source /etc/profile 发布公钥给jenkins主机 > \[root@tomcat\~\]# ssh-keygen > > \[root@tomcat \~\]# ssh-copy-id 192.168.50.53 主机Jenkins默认用jenkins用户去连接git,所以用jenkins用户生成密钥对,并发送给git和web > \[root@jemkins \~\]# id jenkins > > uid=997(jenkins) gid=995(jenkins) 组=995(jenkins) > > \[root@jemkins \~\]# su -s /bin/bash jenkins > > bash-4.2$ ssh-keygen > > bash-4.2$ ssh-copy-id git@192.168.50.51 > > 登陆测试 > > bash-4.2$ ssh git@192.168.50.51 > > Last login: Fri Aug 25 14:10:41 2023 > > \[git@git \~\]$ exit > > 登出 > > Connection to 192.168.50.51 closed. > > bash-4.2$ exit > > exit 主机给其他主机也做密钥保险一点 > \[root@jemkins \~\]# ssh-copy-id 192.168.50.51 > > \[root@jemkins \~\]# ssh-copy-id 192.168.50.54 ## ******4、新建Maven项目****** 在以上配置完成后,回到 Jenkins 首页,选择"新建任务",然后输入一个任务名称 "probe",并选中"Maven project"点击当前页面下方的"确定"按钮。 ![](https://file.jishuzhan.net/article/1696549246964076545/b65353908a0843a89398a159f848dab3.png) ![](https://file.jishuzhan.net/article/1696549246964076545/2653060e40734f2192d64ef07330ae14.png) 在点击"确定"按钮后,选择"源码管理"选中"Git",配置"RepositoriesURL"为 [++++git@192.168.50.51++++ ++++:/home/git/probe.git++++](mailto:git@192.168.200.111:/home/git/probe.git) ![](https://file.jishuzhan.net/article/1696549246964076545/ba54b4b42bfe4e169ee75e5c0ccaaf7b.png) 往下选择"Build" ![](https://file.jishuzhan.net/article/1696549246964076545/9da1484259784810b3f62b6080999fbf.png) |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 这是一个Maven命令,意思是在执行项目构建时,执行clean和package两个Maven目标。"-Dmaven.test.skip=true"的作用是跳过执行测试用例。具体来说: * `clean`:清除项目目录中旧的构建结果,以便重新构建。 * `package`:将项目编译成可执行的JAR包或WAR包(如果是Web应用程序)等,以便进行部署。 * `-Dmaven.test.skip=true`:在构建时跳过测试阶段,以加快构建过程的速度。如果不跳过测试,则Maven会自动执行项目中所有的测试用例。 因此,运行这个命令将会对项目进行彻底清理,并将最终的构建结果打包成可执行的JAR包或WAR包(如果是Web应用程序)等,而且不会执行测试用例。 | clean package -Dmaven.test.skip=true 选择"构建后操作"中的"send build artfacts over SSH" "Exec command"中执行命令的含义是:在自动部署前先杀掉 Tomcat 进程,然后删除 war 包,用 scp 远程拷贝命令将 Jenkins 自动打包好的项目 war 包拷贝到当前 Tomcat 应用目录。 然后重启 Tomcat 。 ![](https://file.jishuzhan.net/article/1696549246964076545/cd13c4bebf0f4d0bb2d8b3a5ac916f40.png) > scp 192.168.50.53:/root/.jenkins/workspace/probe/psi-probe-web/target/probe.war /usr/local/tomcat/webapps/ > > /usr/local/tomcat/bin/startup.sh 以上全部配置完成后,点击保存即可。然后点击刚才创建的"probe"-\>"Build Now" 直至项目构建完成。构建过程可以在"控制台输出"中查看到。 ![](https://file.jishuzhan.net/article/1696549246964076545/2730892fe9b145ce9fe46ff85d668b75.png) ![](https://file.jishuzhan.net/article/1696549246964076545/f5146c045fcf4af7bc2113c07f7c611d.png) ![](https://file.jishuzhan.net/article/1696549246964076545/f6bdf2a299fe4daea023f487c1c2ff05.png) ## ******5、**** ****验证 Jenkins 自动打包部署结果****** 在web主机上查看 probe 目录是否被拷贝到/usr/local/tomcat/webapps 目录下 > \[root@tomcat webapps\]# ll > > 总用量 26624 > > drwxr-x---. 14 root root 4096 8月 25 14:03 docs > > drwxr-x---. 6 root root 83 8月 25 14:03 examples > > drwxr-x---. 5 root root 87 8月 25 14:03 host-manager > > drwxr-x---. 5 root root 103 8月 25 14:03 manager > > drwxr-x---. 7 root root 88 8月 25 15:59 probe > > -rw-r--r--. 1 root root 27253121 8月 25 15:59 probe.war > > drwxr-x---. 3 root root 4096 8月 25 14:03 ROOT 从构建后的执行命令可以看出,Tomcat 已经重新启动,通过浏览器访问测试 probe 监控系统。[http://192.168.50.54:8080/probe](http://192.168.200.113:8080/probe "http://192.168.50.54:8080/probe")。 ![](https://file.jishuzhan.net/article/1696549246964076545/1d27588cb7064291939fe73a8f6833cf.png) 创建用户免密 > \[root@tomcat \~\]# vim /usr/local/tomcat/conf/tomcat-users.xml > > 44 \ > > 45 \ > > 46 \ > > 47 \ > > \~ 注释掉 > \[root@tomcat \~\]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml > > 19 \

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
企鹅不耐热.5 分钟前
Scala基础知识7
开发语言·后端·scala
blog_jenny20 分钟前
Android 14 、15动态申请读写权限实现 (Java)
android·java·gitee
TimeDoor22 分钟前
整理我的macos的复杂混乱的python环境
开发语言·python·macos
用户5669994370329 分钟前
一篇文章弄懂Lambda 表达式
java
owde30 分钟前
深入 C++ 线程库:从创建到同步的探索之旅
开发语言·c++·thread·lock
凌冰_31 分钟前
Java Collections 类中常用方法使用
java·开发语言
我是坑货42 分钟前
maven的项目管理和构建生命周期
java·log4j·maven
T0uken1 小时前
【C++】信号槽与事件总线的轻量实现
开发语言·c++
du fei1 小时前
C# 串口通信
开发语言·c#
遥不可及~~斌1 小时前
基于Redis实现短信防轰炸的Java解决方案
java·数据库·redis