如何实现tomcat自动化部署

最近接触了jenkins这个东西,所以花点时间了解了下。它可以在代码上传仓库(如github,gitee,gitlab)后,在jenkins(一个网站界面)中通过获取代码仓库中最新代码,进行自动化部署,而省去手动打包、上传服务器、部署这一系列步骤,非常方便。

下面教程分为以下几个部分:

一、在你的本地电脑或者linux服务器上下载安装jenkins:

jenkins下载地址:https://jenkins.io/ 下载网站的war包版本就好了

下载完后把它部署到你的tomcat上运行:放到tomcat的webapps目录下,启动tomcat(windows下双击startup.bat或者linux下运行sh startup.sh),然后通过浏览器访问,如我的电脑上访问:localhost:8080/jenkins 。启动后的界面如下:

如何实现tomcat自动化部署图1

然后到提示的文件中把里面的文本复制出来填到管理员密码中。

接着如果是在本地电脑跑,可能会出现:该jenkins实例似乎已离线 提示,如果出现,是因为本地https访问不了的原因。在浏览器中另打开一个界面http://localhost:8080/pluginManager/advanced,把升级站点中的url中的https改为http,保存更新。然后关掉tomcat服务器重启,就可以联网了。

接下来选择安装推荐的插件,这个需要一定的时间。最后额外推荐安装两个插件,在系统管理中可以安装插件:

1、 Rebuilder
2、 Safe Restart

二、在linux服务器中安装git, maven,创建一个jenkens目录,配置git的公钥到你的github上,这些步骤是使用jenkins的前提。

安装git的目的是在自动化部署前实时从git远程仓库中拉取最新的代码。在linux(我用的是centos系统)安装git:

yum install git

生成密钥:

ssh-keygen -t rsa -C “youremail@abc.com”

可以不设置密钥密码直接按三次回车。 把家目录中生成的公钥内容复制到github或其他仓库上。

安装maven的目的是通过项目中的pom.xml文件自动解决项目依赖问题,构建项目。linux中通过wget+下载链接下载maven的zip包然后解压即可。配置maven环境变量:

vim /etc/profile

//在这个文件末尾加上
export MAVEN_HOME=/root/maven3.4.5
export PATH=$MAVEN_HOME/bin:$PATH

//保存后在命令行输入,启动配置
. /etc/profile

创建jenkins目录,用来存储拉取下来的项目代码等。

三、将Linux服务器注册到Jenkins上

1、开启服务器上的ssh服务,可通过 netstat -anp | grep :22命令查看是否开启

2、先来测试一下怎么在jenkins中操作远程服务器

在jenkins中选择系统管理——》新建节点

如何实现tomcat自动化部署图2

其中远程工作目录即你在Linux上创建的jenkins目录。在Credentials添加一个远程用户,输入你的远程机器用户名和密码保存。

如何实现tomcat自动化部署图3

点击TestEnv,启动代理。

在全局工具配置中配置git命令:

如何实现tomcat自动化部署图4

3、自动化部署过程原理:

如何实现tomcat自动化部署图5

所以需要编写一个shell脚本来执行这个过程。

具体的创建Jenkins任务的过程为

1.创建jenkins任务

2.填写Server信息

3.配置git参数

4.填写构建语句(shell脚本),实现自动部署。

四、创建自动化部署任务

1、编写shell部署脚本deploy.sh,并放到linux服务器中的jenkins目录下,在该目录下通过touch deploy.sh创建一个脚本,把下面的脚本复制到里面即可(到时每次自动部署都会执行它),脚本中的my-scrum为我要自动构建的项目名:

#!/usr/bin/env bash
#编译+部署项目站点

#需要配置如下参数
# 项目路径, 在Execute Shell中配置项目路径, pwd 就可以获得该项目路径
# export PROJ_PATH=这个jenkins任务在部署机器上的路径

# 输入你的环境上tomcat的全路径
# export TOMCAT_APP_PATH=tomcat在部署机器上的路径

### base 函数
killTomcat()
{
#pid=`ps -ef|grep tomcat|grep java|awk ‘{print $2}’`
#echo “tomcat Id list :$pid”
#if [ “$pid” = “” ]
#then
# echo “no tomcat pid alive”
#else
# kill -9 $pid
#fi
#上面注释的或者下面的
cd $TOMCAT_APP_PATH/bin
sh shutdown.sh
}
cd $PROJ_PATH/my-scrum
mvn clean install

# 停tomcat
killTomcat

# 删除原有工程
rm -rf $TOMCAT_APP_PATH/webapps/ROOT
rm -f $TOMCAT_APP_PATH/webapps/ROOT.war
rm -f $TOMCAT_APP_PATH/webapps/my-scrum.war

# 复制新的工程到tomcat上
cp $PROJ_PATH/scrum/target/order.war $TOMCAT_APP_PATH/webapps/

cd $TOMCAT_APP_PATH/webapps/
mv my-scrum.war ROOT.war

# 启动Tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh

2、在jenkins上点击新建一个任务,填好任务名,填写运行的节点(上文中新建节点时创建的):

如何实现tomcat自动化部署图6

3、点击源码管理,填写github(或gitlab等)地址:

如何实现tomcat自动化部署图7

4、点击add,选择check out to a sub-directory ,添加源码下载到jenkins目录下的指定目录(可以命名为你的项目名):

如何实现tomcat自动化部署图8

5、填写构建任务时的shell脚本,然后保存,点击立即构建完成自动构建。(这里有一个坑,一定要给tomcat下所有sh文件加上x权限才能启动tomcat成功,具体为在tomcat目录上层执行chmod a+x -R tomcat目录或者在tomcat的bin目录下执行chmod +x *.sh)

#当jenkins进程结束后新开的tomcat进程不被杀死
BUILD_ID=DONTKILLME
#加载变量
. /etc/profile
#配置运行参数

#PROJ_PATH为设置的jenkins目录的执行任务目录
export PROJ_PATH=`pwd`
#配置tomcat所在目录
export TOMCAT_APP_PATH=/root/tomcats/tomcat-my-scrum

#执行写好的自动化部署脚本
sh /root/jenkins/

deploy.sh

如何实现tomcat自动化部署图9

6、自动化构建成功:

如何实现tomcat自动化部署图10

7、后续代码如果有改动,只要push到github或者gitlab等上,在jenkins界面中再次执行构建任务就可以了,非常方便,自动化部署,再也不用手动上传项目到服务器了。

五、解决一个tomcat关闭,所有tomcat都被关闭了的问题(如果你的jenkins也是安装的服务器上的其中一个tomcat中,就可能被莫名杀掉)

这是因为所有的tomcat的关闭脚本(shutdown.sh或者说catalina.sh)都默认监听的是8005端口。只要进去tomcat目录下的conf目录下的server.xml文件中,将

<Server port=”8005″ shutdown=”SHUTDOWN”>
<Listener className=”org.apache.catalina.startup.VersionLoggerListener” />
<!– Security listener. Documentation at /docs/config/listeners.html
<Listener className=”org.apache.catalina.security.SecurityListener” />
–>

中的8005端口改为不同的端口,就不会一个tomcat关闭,所有的tomcat都被关闭了

六、以后可以在linux服务器中安装多个tomcat,来部署不同的项目,分别使用不同的端口,如我喜欢用8081,8082,8083等端口来解决多个tomcat端口冲突问题(在tomcat的conf目录下的server.xml中修改即可,默认为8080)。然后可以用jenkins来管理这些tomcat的自动化部署啦。

发布到本地的话,在maven中使用tomcat plugin即可,如果要发布到测试环境SIT或UAT环境,应该使用ci工具比如Jenkins, 在Jenkins中建一个continues project, 只要有code checkin, 就自动build和deploy到测试环境,在Jenkins中还需要有一个release project, 因为continues自动build的都是snapshot,这不能部署到production上去, 这个release project就是用来build release版本,然后publish到公司内部的maven repositories(一般用nexus),开发人员不应该允许操作production环境, 应该由专门的服务器管理人员从nexus上下载release版本进行production的部署。

题外说一点,大多数部署也包含数据库脚本的变化,这怎么自动部署,也是有很好的工具比如liquibase,用liquibase建立数据库命令的版本控制,打包在war/ear中,部署时liquibase能自动检测环境中现有的数据库脚本的版本,而运行没有部署过的数据库脚本命令。

本文来自投稿,不代表天一生活立场,如若转载,请注明出处:http://tiyigo.com/it/40956.html

(0)
上一篇 2023-08-28 10:29
下一篇 2023-08-28 10:36

相关推荐

  • 苹果id账号忘了怎么办邮箱也忘了

    Apple ID作为IOS设备特有的一种账号,它在IOS设备使用中服务包含了付费、下载、购买、支付、安全等等,所以它的安全性是非常重要的。但是在如今这个电子支付互联网服务全面普及的…

    2023-03-04
  • 怎样驱鼠,插电驱鼠

    方法一 : 自然地驱逐老鼠 1、保持室内整洁。老鼠跑到屋子里来一般都是受到食物的诱惑。如果家里什么吃的都没有,老鼠自然也就不怎么呆的下去了。把食物全都放在密封的容器里,或者是老鼠够…

    电脑教程 2023-01-20
  • 张北草原和丰宁坝上自驾游哪个好

    去草原当然首选是去呼伦贝尔了! 呼伦贝尔,我们会脱口而出“大草原” 没错,呼伦贝尔有着国内最为丰富的草原旅游资源,而我们脑海里总是充斥这里的牛、羊、马在草原上成群结队奔跑放肆,蒙古…

    电脑教程 2023-08-09
  • 怎么拍360度全景图?有技巧吗

    话不多说,你是想要以下这种效果吗? 这种就是拍摄360度旋转展示效果的,想要拍摄这种效果你需要一个转盘,稳定旋转360度。还要边旋转边拍摄。最后还要合成一个动图,如果是手动去操作的…

    2023-06-20
  • 实况足球为什么比不过FIFA,实况足球2017与fifa17

    实况如果你买的正版的话自然清楚了,因为没有授权,大量球队都没有,模型也没有。而fifa17采用的是最新的寒霜引擎开发,人物模型、场景的建模都超出原来的画面质量,球员的皮肤头发等细节…

    2023-04-04
  • 油画高级灰怎么调色

    油画的高级灰调色方法需要先调暗色,然后加进去白色,调暗色时注意不要直接大笔加黑,加白色的同时可以根据画面的大色调加入比较合适的颜色。 油画中的高级灰更多的是一种色调介于明亮和暗淡两…

    2023-01-13
  • cad如何绘制设计图框(cad绘制图框快捷命令)

    CAD图纸,设计图库一般有: A4 A3 A2 A1 还有每个尺寸的像素! ,相信很多有经验的CAD绘图设计师都会有同样的感觉,那就是没有完完整整地绘制过一份图框。确实,图框对一家…

    2023-08-27
  • 如何防止别人蹭网?有哪些方法比较好用呢

        如果自家的无线网络越来越慢,那么第一反应可能是“检查蹭网”,网络被蹭不仅占用了网络带宽,还占用了路由器的硬件资源,导致自家网速越来越…

    2023-02-22
  • 小米路由器mini青春版怎么样

    巧了前几天想换路由器,就研究了一下小米系的路由器,简单说一下吧。 小米路由器。 小米路由器算是旗舰产品了,理论上好像是支持千兆带宽,不过对一般消费者来说这个没啥用,千兆带宽一般都是…

    2023-02-26
  • 笔记本电脑经常自动关机什么原因

    1.无法知晓你的电脑是集成显卡还是独立显卡,但是根据你说的故障现象,应该与GPU,有关,全屏和小屏GPU的图形渲染是不同的。 2.如果是集成显卡这个就与CPU散热能力有关,如果是独…

    2023-02-07