第四阶段提升
时 间: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
选择控制台输出,查看构建过程
等待结束
在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 自动打包部署完毕。