一个命令更新线上项目:maven配置tomcat热部署

一个命令更新线上项目:maven配置tomcat热部署

精选文章moguli202025-05-25 23:54:111A+A-

背景

当我们开发完项目,需要部署到tomcat服务器,你是否重复以下步骤,连接远程服务器、关闭tomcat、删除war包、上传war包、启动服务器,步骤是如此繁琐,那么有没有一种方式直接一键部署呢?答案是肯定的,就是我今天要说的tomcat热部署。

热部署就是在不停止tomcat的情况下,将新的war包放上去,达到服务不中断,用户无察觉的目的。

在开始介绍前,先说说他的原理

Tomcat热部署原理

启动tomcat时,tomcat也会同时启动一个后台线程BackgroundProcessor,在线程内部他主要做这几件事:

1各容器组件周期性的检查类文件变化,当检查到文件变化时,tomcat会使用WebAppClassLoader 类加载器重新加载文件(热加载),过程中不会清空session。

2触发HostConfig监听器,定期检查web应用,应用删除,销毁content容器,有新的应用就部署(热部署),过程中会清空session。

上边两件事都有开关控制:

热加载:<Context reloadable="true"/> 默认是关闭的

热部署:<Host /> 默认是开启的

实际操作

1开启热部署配置

我使用的是tomcat8,tomcat7操作略有不同。

找到conf文件夹,修改tomcat-users.xml

在<tomcat-users> 节点下面增加如下配置,密码和用户名都可以自己设置:


<role rolename="manager-gui" />
<role rolename="manager-script" />
<user username="账号" password="密码" roles="manager-gui, manager-script"/>

开启远程ip访问

找到
/usr/local/tomcat/webapps/manager/META-INF/context.xml

注释掉这个Value节点。(关闭远程访问Manager访问权限ip限制)。

如果能看到下边网页就代表配置成功了

2配置pom文件

<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<port>8080</port><!--端口-->
<uriEncoding>UTF-8</uriEncoding>
<!--远程tomcat路径-->
<url>http://ip地址:8080/manager/text</url>
 <username>lytest</username><!--账号-->
<password>lytest</password><!--密码-->
</configuration>
</plugin>
</plugins>

注意:如果<path>配置/,那么项目会直接发布到ROOT中,直接访问即可

如果<path>配置成/chinatsiPortalWeb,那么会在webapps下创建chinatsiPortalWeb.war 包,访问时路径上要加上chinatsiPortalWeb

3部署(以后更新项目只需这一步即可)

添加命令

执行,看到如下即代表发布成功

服务器上已经出现了相应war包

项目正常访问

您的赞和关注是对我创作的最大肯定谢谢大家

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2