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

目录

1、配置git主机

2、配置jenkins主机

3、配置web主机

4、新建Maven项目

[5、验证 Jenkins 自动打包部署结果](#5、验证 Jenkins 自动打包部署结果)


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

实验环境

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

所有主机关闭防火墙和selinux

root@localhost \~# systemctl stop firewalld

root@localhost \~# iptables -F

root@localhost \~# setenforce 0

1、配置git主机


# rpm安装安装依赖关系: 1和2都安

root@gitclient \~# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 【可能还会缺失部分依赖比如c++可以根据需要自行安装】

# 编译安装---服务端和客户端,访问https://mirrors.edge.kernel.org/pub/software/scm/git/下载所需要的版本

先rz导入git2.22的包

root@gitclient \~# tar xf git-2.22.0.tar.gz -C /usr/src/

root@gitclient \~# cd /usr/src/git-2.22.0/

root@git git-2.22.0# make configure【这一步可能会有以下提示 yum -y install 安装即可】

root@git git-2.22.0# yum -y install gcc-c++ 【安装c++依赖】

root@git git-2.22.0# ./configure --prefix=/usr/local/git && make && make install

root@git git-2.22.0# ln -sf /usr/local/git/bin/git /usr/bin/

root@git git-2.22.0# git --version

#在git服务端配置用户【第一台】

root@git \~# useradd git

root@git \~# echo "123456" | passwd --stdin git

root@git \~# echo "123456" | passwd --stdin git

创建本地仓库probe

root@git \~# su - git

上一次登录:四 6月 20 09:46:10 CST 2019pts/0 上

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 #上传psi-probe.tar.gz

root@git \~# tar xf psi-probe.tar.gz

root@git \~# git clone git@192.168.200.111:/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 "jialiang@163.com"

root@git probe# git config --global user.name "jialiang"

root@git probe# git commit -m "all probe"

root@git probe# git push origin master

2、配置jenkins主机


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

"添加凭据"。

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

添加 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"测试远程主机配置。测试远程主机配置成功后点击"保存"按钮即可。

配置 Maven、JDK、Git 环境

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

/usr/local/java

在Jenkins安装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

为maven更换阿里云镜像站

root@jenkins \~# vim /usr/local/maven-3.5.0/conf/settings.xml

#删除两个<mirrors>中的所有东西,大概12行,把下面的阿里云镜像站**** 添加到两个<mirrors>中

<mirror>

<id>nexus-aliyun</id>

<mirrorOf>central</mirrorOf>

<name>Nexus aliyun</name>

<url>http://maven.aliyun.com/nexus/content/groups/public\</url>

</mirror>

最后达到的效果

在"Global Tool Configuration"配置界面中找到 Maven 配置选项,然后点击"新增 Maven"并设置别名为"Maven3.5"。

Git 配置

root@jenkins \~# which git

/usr/bin/git

以上全局基本配置完毕后,点击保存即可完成。

3、配置web主机


root@tomcat \~# tar xf apache-tomcat-8.5.40.tar.gz

root@tomcat \~# tar xf jdk-8u191-linux-x64.tar.gz

root@tomcat \~# mv jdk1.8.0_191/ /usr/local/java

root@tomcat \~# mv apache-tomcat-8.5.40 /usr/local/tomcat

root@tomcat \~# 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@tomcat \~# source /etc/profile

root@tomcat \~# 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)

发布公钥给jenkins主机

root@tomcat \~# ssh-keygen

root@tomcat \~# ssh-copy-id 192.168.200.112

【回到jenkins】

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

root@jenkins \~# id jenkins

uid=988(jenkins) gid=982(jenkins) 组=982(jenkins)

root@jenkins \~# su -s /bin/bash jenkins

bash-4.2$ ssh-keygen

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

bash-4.2$ ssh ++++git@192.168.200.111++++ #登录测试

bash-4.2$ exit

root@jenkins \~# ssh-keygen

root@jenkins \~# ssh-copy-id git@192.168.200.111

root@jenkins \~# ssh ++++git@192.168.200.111++++ #登录测试

4、新建Maven项目


在以上配置完成后,回到 Jenkins 首页,选择"新建任务",然后输入一个任务名称 "probe",并选中"Maven project"点击当前页面下方的"确定"按钮。

在点击"确定"按钮后,选择"源码管理"选中"Git",配置"RepositoriesURL"为

++++git@192.168.++++ ++++200.111++++ ++++:/home/git/probe.git++++

选择"Build"

clean package -Dmaven.test.skip=true

选择"构建后操作"中的"send build artfacts over SSH" "Exec command"中执行命令的含义是:在自动部署前先杀掉 Tomcat 进程,然后删除 war 包,用 scp 远程拷贝命令将 Jenkins 自动打包好的项目 war 包拷贝到当前 Tomcat 应用目录。 然后重启 Tomcat 。

scp 192.168.200.112:/root/.jenkins/workspace/probe/psi-probe-web/target/probe.war /usr/local/tomcat/webapps/

/usr/local/tomcat/bin/startup.sh

以上全部配置完成后,点击保存即可。然后点击刚才创建的"probe"->"Build Now" 直至项目构建完成。构建过程可以在"控制台输出"中查看到。

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


在web主机上查看 probe 目录是否被拷贝到/usr/local/tomcat/webapps 目录下

root@tomcat \~# ls /usr/local/tomcat/webapps/

root@tomcat \~# ls /usr/local/tomcat/webapps/probe -l

从以上结果来看,Jenkins 已把打好的 probe war 包拷贝过来了。

从构建后的执行命令可以看出,Tomcat 已经重新启动,通过浏览器访问测试 probe 监控系统。 http://192.168.200.113:8080/probe

root@tomcat \~# vim /usr/local/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>

<role rolename="admin-gui"/>

<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>

</tomcat-users> # 在此行前加入上面三行

root@tomcat \~# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"

allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->

注释掉以上内容

root@tomcat \~# /usr/local/tomcat/bin/shutdown.sh

root@tomcat \~# /usr/local/tomcat/bin/startup.sh

至此,Jenkins 自动打包部署完毕

相关推荐
大树881 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质1 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智1 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_1 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉1 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦1 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
java_cj1 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
lsyeei1 天前
linux 系统目录详解
linux·运维·服务器