基于Jenkins自动打包并部署Tomcat环境-------从小白到大神之路之学习运维第85天

news2024/11/24 20:49:19

第四阶段提升

时  间:2023年8月22日

参加人:全班人员

内  容:

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

目录

一、传统网站部署的流程

(一)传统代码上线的过程

(二)目前主流网站部署的流程

(三)Jenkins 的工作原理:

二、安装部署基于Jenkins自动打包并部署Tomcat环境

(一)实验环境,服务器设置

(二)所有主机关闭防火墙和selinux,修改主机名

(三)配置git主机

(四)配置jenkins主机

(五)Jenkins配置

(六)配置web主机

(七)网页访问测试:


一、传统网站部署的流程

在运维过程中,网站部署是运维的工作之一。

传统的网站部署的流程大致分为:

需求分析-->原型设计-->开发代码-->提交代码-->内网部署-->内网测试-->确认上线-->备份数据-->外网更新-->外网测试-->发布完成。

        如果在内网测试时发现代码有异常,返回代码开发人员名字,调整代码;如果在外网测试时发现外网部署的代码有异常,可以及时进行网站回滚。

 

(一)传统代码上线的过程

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

(二)目前主流网站部署的流程

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

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

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

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

 

(三)Jenkins 的工作原理

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

 

二、安装部署基于Jenkins自动打包并部署Tomcat环境

(一)实验环境,服务器设置

IP地址

主机名

角色

192.168.100.131

git

git服务器

192.168.100.132

Jenkins git客户端

jenkins服务器

192.168.100.133

tomcat

web服务器

(二)所有主机关闭防火墙和selinux,修改主机名

git主机

 

Jenkins主机

 

web主机

 

(三)配置git主机

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

[root@gitclient ~]# yum -y install curl-devel expat-devel gettext-devel  openssl-devel zlib-devel

 

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

[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

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

 

        Ps备注:如上图,出现了/bin/sh: autoconf: 未找到命令make: *** [configure] 错误 127,怎么办?

根据提示安装autoconf

[root@git git-2.22.0]# yum -y install autoconf

 

再重新配置编译安装!

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

[root@git git-2.22.0]# git --version

 

3、#在git服务端配置用户

[root@git ~]# useradd git

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

 

4、创建本地仓库probe

[root@git ~]# su - git

[git@git ~]$ mkdir probe.git

[git@git ~]$ cd probe.git

[git@git probe.git]$ git --bare init

[git@git probe.git]$ exit

 

5、克隆项目代码同步到自己创建的仓库中

[root@git ~]# rz  #上传psi-probe.tar.gz

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

[root@git ~]# git clone git@192.168.100.131:/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 "13363571949@163.com"

[root@git probe]# git config --global user.name "huyang"

[root@git probe]# git config --list

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

[root@git probe]# git push origin master

 

(四)配置jenkins主机

1、源码安装jenkins

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

[root@jenkins ~]#tar xf jdk-17_linux-x64_bin.tar.gz

[root@jenkins ~]#mv jdk-17.0.8 /usr/local/java

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

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

[root@jenkins ~]#java -version

[root@jenkins ~]# rpm -ivh jenkins-2.181-1.1.noarch.rpm

 

2、启动jenkins

[root@jenkins ~]# jenkins start (保持打开状态)

 

密码如图:

[root@jenkins ~]# netstat -lnpt | grep :8080

 

3、web配置

浏览器访问测试: http://192.168.100.132:8080

 

输入秘钥:

 

解锁Jenkins,密码从命令行中获取

 

 输入授权密码,然后点击下一步

 

选择安装推荐的插件

 

自动下载插件(状态全绿下一步)

 

状态有红色,重头再安装

 

状态有红色,重启后也可进,但是有插件安装错误,会影响

 

 

全绿之后操作:

 

创建管理员用户,选择使用admin账户继续!

 

实例配置,保存并完成!

 

点击开始使用

 

可以使用了!

 

(五)Jenkins配置

1、安装 Jenkins 必要插件

        在 Jenkins 首页中,点击左侧的Manage Jenkins>>Manage Plugins>>可选插件,在过滤搜索框中输入要安装的 Publish Over SSH 、 Maven Integration 插件,并勾中其左侧的复选框,点击“直接安装”即可开始插件安装操作。

 

 

 

查看:

 

页面最下方:

 

2、添加验证凭据

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

如图操作:

 

如图操作:

 

如图操作:

 

如图操作:

 

如图操作:

 

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

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

“添加凭据”

 

点击“+Add Credentials”

 

填写以上数据后,点击“确定”就可以查看到新增的远程 web 主机账号,如下图:

 

3、添加 Publish Over SSH 远程主机

在Jenkins 首页中点击“Manage Jenkins”->“Configure System”->“Publish over SSH”->“SSH Servers”->“增加”选项按钮,添加 SSH 远程主机:

 

        如图所示,输入 Name、Hostname、Username 等必要信息后,点击“高级”选项按钮->勾选“Use Password authentication,or use a different key”选项->输入“远程主机登录密码”->“Test Configuration”测试远程主机配置。测试远程主机配置成功后点击“保存”按钮即可。

 

4、配置 Maven、JDK、Git 环境

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

/usr/local/java

 

 

5、在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

 

6、为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.0”。

 

7、Git 配置

[root@jenkins ~]# which git

/usr/bin/git

 

 

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

(六)配置web主机

1、安装tomcat

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

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

 

2、发布公钥给jenkins主机

[root@tomcat ~]# ssh-keygen

[root@tomcat ~]# ssh-copy-id 192.168.100.132

 

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

[root@jenkins ~]# id jenkins

[root@jenkins ~]# su -s /bin/bash jenkins

bash-4.2$ ssh-keygen

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

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.100.131

[root@jenkins ~]# ssh git@192.168.200.111             #登录测试

 

4、新建Maven项目

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

选择“新建item

选中“Maven project”点击“确定”

 

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

git@192.168.100.131:/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 。

选择后,在Exec command输入下列内容:

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

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

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

 

选择Build Now,出现#1

 

点击历史,出现链接

 

点击链接,进入到#1

 

选择控制台输出,查看构建过程

 

 

等待结束

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.100.133:8080/probe

访问不了,需要配置权限!

[root@tomcat ~]# vim /usr/local/tomcat/conf/tomcat-users.xml

[root@tomcat ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml

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

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

 

再次访问测试:

http://192.168.100.133:8080/probe,输入用户名:tomcat,密码:tomcat

 

登录进去后显示:

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/913082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在mac下,使用Docker安装达梦数据库

前言&#xff1a;因为业务需要安装达梦数据库 获取官网下载tar包&#xff08;达梦官网的下载页面https://www.dameng.com/list_103.html&#xff09;&#xff0c;或者通过命令 一、下载tar包 命令下载&#xff1a;wget -O dm8_docker.tar -c https://download.dameng.com/eco/…

matlab将数组值划分为两类

例如&#xff1a;大于0的处理为1&#xff0c;小于0的处理为-1. 当然&#xff0c;可以选择循环结构和选择结构&#xff0c;但是效率会很低。 这里直接使用逻辑语句完成。 % 不使用循环语句&#xff0c;将数组内值划分为两类 clc; clearvars; a[-0.1422 , -0.0433 , 0.1131 …

[ MySQL ] — 如何理解索引以及索引的操作

目录 初识索引 认识磁盘 MySQL与存储 了解磁盘 mysql与磁盘的交互 索引的理解 理解单个Page 理解多个Page 页目录 单页情况 多页情况 索引结构 - B树 聚簇索引 和 非聚簇索引 索引操作 创建主键索引 唯一索引的创建 ​编辑 普通索引的创建 全文索引的创建 查询…

outlook等客户端报错:-ERR Login fail. Please using weixin token to login

使用outlook配置腾讯邮箱后&#xff0c;无法收取邮件&#xff0c;点击接收/发送所有文件夹&#xff0c; 提示报错&#xff1a; 任务“testqq.com - 正在接收”报告了错误(0x800CCC92):“电子邮件服务器拒绝您登录。请在“帐户设置”中验证此帐户的用户名及密码。 响应服务器:…

软件配置安装(破解)--- jdk下载配置

下载jdk 如果有oracle账号的话直接登录下载你想要的版本 不然可以尝试镜像站 HUAWEI镜像&#xff1a;https://repo.huaweicloud.com/java/jdk/ 安装 配置&#xff08;细节&#xff09; 这里的JAVA_HOME就是java的家&#xff0c;也就是解压(或安装)之后的java的目录&#xff…

Codeforces Round 879 Div.2

文章目录 A. Unit ArrayB. Maximum StrengthC. Game with ReversingD. Survey in ClassE. MEX of LCM A. Unit Array Problem - A - Codeforces 统计-1的数量cnt&#xff0c;当cnt为奇数或者n-cnt-cnt < 0&#xff08;1的数量小于-1的数量&#xff09;时&#xff0c;ans&…

第三方软件测试机构可提供哪些测试服务?又有哪些注意事项?

软件测试是使用技术的手段&#xff0c;尽可能发现并改正软件中的错误&#xff0c;提高软件的可靠性及需求性&#xff0c;保障软件质量的过程。该过程也是软件开发完必不可少的一步&#xff0c;但国内还是有一些软件企业存在着“重开发&#xff0c;轻测试”的现象&#xff0c;上…

鹅厂涨薪开启,其它大厂会跟风吗?

从22年开始至今&#xff0c;网络上传言最多的就是“某某公司裁员了百分之多少的员工或是什么大幅度降薪等操作”&#xff0c;可谓是哀鸿遍野&#xff0c;每个人都在祈祷&#xff1a;“下一个被裁的不要是自己&#xff08;老天爷保佑&#xff09;”。 网友们吐槽&#xff1a;这些…

html动态爱心代码【三】(附源码)

目录 前言 特效 内容修改 完整代码 总结 前言 七夕马上就要到了&#xff0c;为了帮助大家高效表白&#xff0c;下面再给大家带来了实用的HTML浪漫表白代码(附源码)背景音乐&#xff0c;可用于520&#xff0c;情人节&#xff0c;生日&#xff0c;表白等场景&#xff0c;可直…

如何下载和安装google字体(中文)

打开&#xff1a;https://fonts.google.com/ 点击字体 下载 解压 双击安装 查看 控制面板-》字体-》

win10 下运行 npm run watch-poll问题

背景&#xff1a;在本地练习laravel项目&#xff0c;windows 宝塔环境&#xff08;之前装过ubuntu子系统&#xff0c;很慢&#xff0c;就放弃了。有知道的兄弟说下&#xff0c;抱拳&#xff09;。以下命令我是在本地项目中用git bash里运行的&#xff0c;最好用管理员权限打开你…

【Python】数据分析工具之各种图

1 漏斗图 漏斗图描述状态阶段的顺序递进关系&#xff0c;属于序列类图表 import plotly.express as pxdata dict(number[39, 27.4, 20.6, 11, 2],stage["Website visit", "Downloads", "Potential customers", "Requested price", &…

H3C 无线网络vlan pool架构案例三层组网web配置

实验的是目标就是要实现华为vlan pool那种应用&#xff0c; 整个园区发一种ssid信号&#xff0c;但是连接的客户端可以随机连上后进入不同的vlan&#xff0c;在这大型园区网非常有用。 这种方法也适合同一个ssid情况下&#xff0c;在不同的位置关联不同的vlan 开启自动固化、…

vue3 基础知识 ( 扩展插槽 )03

嘿&#xff01;&#xff01; &#x1f495; 文章目录 一、扩展插槽二、基本使用三 、插槽的默认内容四、具名插槽五、 作用域插槽 一、扩展插槽 在开发中&#xff0c;我们会经常封装一个个可复用的组件&#xff0c;前面我们会通过props传递给组件一些数据&#xff0c;让组件来进…

Sping源码(七)— 后置处理器

简单回顾一下上一篇文章&#xff0c;是在BeanFacroty创建完之后&#xff0c;可以通过Editor和EditorRegistrar实现对类属性的自定义扩展&#xff0c;以及忽略要自动装配的Aware接口。 本篇帖子会顺着refresh()主流程方法接着向下执行。在讲invokeBeanFactoryPostProcessors方法…

FastDeploy部署(C++ Win10)

参考链接&#xff1a;FastDeploy C部署保姆级教程 FastDeploy是百度为了解决AI部署落地难题&#xff0c;发布的新一代面向产业实践的推理部署工具。它旨在为AI开发者提供模型部署最优解&#xff0c;具备全场景、简单易用、极致高效三大特点。项目地址&#xff1a;FastDeploy项…

聊聊调制解调器

目录 1.什么是调制解调器 2.调制解调器的工作原理 3.调制解调器的作用 4.调制解调器未来发展 1.什么是调制解调器 调制解调器&#xff08;Modem&#xff09;是一种用于在数字设备和模拟设备之间进行数据传输的设备。调制解调器将数字数据转换为模拟信号进行传输&#xff0c;…

ArcGIS:如何给栅格数据创建属性表

问题描述&#xff1a;使用ArcMap加载栅格数据后发现没有属性表&#xff0c;如下图&#xff0c;如何创建属性表 解决方法&#xff1a; 方法一&#xff1a; 鼠标右键点击栅格数据&#xff0c;然后选择【属性】&#xff0c;接着点击【符号系统】–【唯一值】&#xff0c;选择计算…

如何提升IT业务安全性?收藏起来照着做!

UPS作为一种关键设备&#xff0c;能够在电力中断时为电子设备提供临时的电力支持&#xff0c;从而防止数据丢失、设备损坏以及生产中断。因此&#xff0c;UPS系统的正常运行对于持续的监控和管理至关重要。 UPS监控不仅仅是关于监视UPS系统的运行状态&#xff0c;更是一项综合性…

微信开发之一键发布群公告的技术实现

简要描述&#xff1a; 设置群公告 请求URL&#xff1a; http://域名地址/setChatRoomAnnouncement 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必…