基于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 自动打包部署完毕

相关推荐
RisunJan8 小时前
Linux命令-rlogin(远程登录)
linux·运维
深圳恒讯8 小时前
菲律宾云服务器与传统VPS的架构差异
运维·服务器·架构
蓝天下的守望者9 小时前
svt_apb_if里的宏定义问题
运维·服务器·数据库
小林ixn9 小时前
从“玩具工具”到“跨语言利器”:MCP 协议实战解析
运维·服务器·网络
小顿的企业观察10 小时前
中企出海战略规划,正在从“走出去”转向“走进去”
大数据·运维·人工智能·产品运营·制造
数智化转型推荐官10 小时前
2026统一身份管理系统五大发展趋势解读
java·运维·微服务
看菜鸡互10 小时前
探索用 SlideML 让大模型生成 PPT 的实验方法
java·运维
liguojun202512 小时前
篮球馆自动计时收费系统:从规则配置到自动结算的全流程拆解
java·大数据·运维·人工智能·物联网·1024程序员节
Promise微笑12 小时前
红外分辨率 160×120、320×240、384×288 与 640×480实战选型指南
大数据·运维·人工智能·物联网
云飞云共享云桌面13 小时前
单机建模卡顿运维繁琐!中小型机械制造厂云飞云 3D 云桌面落地
运维·服务器·网络·3d·自动化·电脑·负载均衡