【04】【Maven项目热部署】将Maven项目热部署到远程tomcat服务器上

1.虽然现在Maven中央仓库中支持的tomcat插件只支持到tomcat7这个版本,但是可以利用这个插件对Web项目进行热部署,热部署到远程服务器的tomcat服务器上,远程服务器上的tomcat版本可以是更高的版本,比如说tomcat8、9、10或更高的版本中。

将Maven项目热部署到远程tomcat中

文章目录

  • 将Maven项目热部署到远程tomcat中
    • 1.为什么要写这篇文章?
      • 1.1web项目分模块开发
      • 1.2分模块开发解决项目管理的灵活性的主要表现
    • 2.一键热部署解决方案
    • 3.一键热部署实现思路
    • 4.Tomcat中的Root项目的配置和使用
    • 5.在tomcat-user.xml中配置远程服务器tomcat的账户信息
    • 6.修改 IP 访问权限
    • 7.登录ROOT项目,使用Manager App功能管理tomcat中的项目资源
    • 8.maven远程上传war项目的配置和使用
      • 8.1注意
    • 9.tomcat虚拟目录配置
    • 10.参考文档
    • 11.视频教程

本尊

1.为什么要写这篇文章?

1.1web项目分模块开发

开发Web项目,用到了Maven对Web项目进行分模块开发,提高项目构建、发布、管理的灵活性。

1.2分模块开发解决项目管理的灵活性的主要表现

(1)Web项目的依赖管理变得更加灵活
web项目依赖jar包的管理不再乱麻一团,管理起来变得清晰明了了,升级jar包的版本也变得更灵活方便,直接根据Maven官方中央仓库的版本号修改升级或降级即可。

(2)对Web项目模块的管理变得更灵活,同时对程序员的管理也变得更灵活
分模块开发之后,项目增加一个模块,移除一个模块不再是麻烦事。从公司招聘新员工角度来说,招一个程序员进来,让其开发一个项目模块,如果这个程序员是水货,能力达不到,他所开发的模块虽然没弄成,但是因为公司Web项目采用了分模块开发,不会影响整个公司Web项目的大局,直接从整个项目模块中移除掉他所开发的模块即可。这都是Maven的聚合能力提供了这样一个好的支撑,立下了汗马功劳。可以说,对项目,对员工的管理都变得更具有灵活性,公司可以大胆的让新员工做尝试,对公司程序员的培养让其提升能力打下坚实基础。

(3)项目的多环境部署变得更加的灵活
a.使用Maven构建Web项目之后,让Web项目可以轻松的一键热部署到多个环境,如线上环境、开发环境、测试环境。
b.注意:无论你的Web项目运行所处环境是windows系统还是linux系统都可以一键搞定,关键还是热的,即对某一个项目模块修改升级之后,可以立即通过热部署,一键实现某个环境的升级部署。从这一点上来说,以后Web项目的bug修复,无论是线下、还是线上都将变得极其的容易。

(4)私服仓库的使用,使得Web项目的团队协作开发变得更加灵活

a.分模块开发后,由于团队成员每个人负责开发的模块不一样,当团队某个成员需要使用其他成员提供的模块支撑(依赖)时,可以通知其他团队成员将自己开发的模块,通过Maven快速的上传发布到公司的私服仓库,该成员直接从私服仓库同步获取新的功能支撑即可,提升了项目的集成效率、使得团队协作开发变理更加灵活方便。

b.私服仓库构建起了本地仓库到阿里云私服仓库和Maven中央仓库之间的桥梁

当Web项目需要第三方开发者提供的jar资源支持时,首先从本地仓库中去寻找是否存在这个资源,如果没有找到,则需要到公司的私服仓库里面去找,公司私服仓库没有就需要从阿里云镜像私服仓库(即Maven中央仓库的镜像)加载 ,如果阿里云镜像私服仓库中没有我们项目开发所需要的jar资源时,会到Maven的中央仓库里去找我们所需要的资源。

在这个过程当中,公司的私服仓库需要做几件事,一是要创建一个代理仓库,配置好阿里云的私服仓库组的地址。二是把这个代理仓库添加到public仓库组里面,让公司的开发者直接访问这个public仓库组,致其可以访问到阿里去的私服仓库组,三是在public仓库组里面也可加上Maven中央仓库组的配置(默认是加上了的,不用我们管)。

总之一句话,就是利用公司的私服仓库组搞定与阿里云镜像仓库组与Maven中央仓库的连接,开发团队的每个成员在本地仓库中直接访问公司的私服仓库组就可以拿到公司其他成员或第三方公司开发的资源了(jar包等)。

2.一键热部署解决方案

由我们自己将修改后的war包上传到linux中,变为由maven帮我们实现。

(1)当我们的项目发生资源变更时,我们会在本地使用Maven对项目资源进行重新打包.
(2)打包后,我们再次使用maven将项目新的war包上传到linux中的tomcat中。

3.一键热部署实现思路

(1)我们已经学过了web开发中的上传功能,那么我们是不是可以开发一个web项目,该web项目提供一个资源上传的功能,比如该项目的名字为A项目。

(2)然后我们将A项目部署到linux中的tomcat中,启动tomcat,然后我们在本地的浏览器中访问A项目。

(3)选择我们的war包,将上传请求发送给A项目,而A项目在接收到上传请求后,将war包存储到linux下的tomcat中的webapps目录下

(4)那么再细细的思考一下,那么能不能让maven去访问我们的项目A的上传功能,将项目的war包上传到linux下的tomcat中的webapps目录下呢?答案是可以的。

(5)说白了就是让我们的maven具备发送http请求的功能

(6)其实项目A是tomcat自带的一个web项目,不需要我们自己开发了。

4.Tomcat中的Root项目的配置和使用

(1)启动远程tomcat服务器

(2)访问tomcat服务器的首页(即广告页,相当于我们的项目A)

tomcat自带的ROOT项目,是tomcat自带的一个web项目。

我们可以通过浏览器访问,然后在浏览器中管理tomcat中的项目资源。
在这里插入图片描述
(3)点击tomcat首页的Manager App

a.当我们点击Manager App时会先提示我们进行登录,在登录界面中输入帐号与密码即可进入到项目资源管理页面。
b.当我们点击取消时,进入登录用户配置提示页面,在该页面中,tomcat提示我们需要在tomcat-user.xml文件中去配置我们的登录帐号信息。

在这里插入图片描述

5.在tomcat-user.xml中配置远程服务器tomcat的账户信息

<role rolename="manager-gui"/> 
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" 
roles="manager-gui,manager-script,manager-jmx,manager-status" />

6.修改 IP 访问权限

(1)关闭远程服务器的防火墙(测试时的方案)

(2)即解决使用ip地址访问被拒绝的问题
参考文档

(3)修改 /webapps/manager/META-INF/ 目录下的 context.xml 文件,而不是 /conf/ 目录下的 context.xml(一定要注意!!!)
将 allow开头的这一行

allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

修改成

allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />

7.登录ROOT项目,使用Manager App功能管理tomcat中的项目资源

在这里插入图片描述

8.maven远程上传war项目的配置和使用

    <!--8.插件统一管理,在子模块中去引用--><pluginManagement><plugins><plugin><!--(3)tomcat插件的坐标--><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><!--3.1maven远程热部署配置,以下配置均是给Maven自己看的--><!--(1)远程tomcat服务器Manager App管理页面请求--><url>http://192.168.10.6:8080/manager/text</url><!--(2)访问远程服务器tomcat的web项目的用户名与密码--><server>tomcat9</server><username>admin</username><password>1234</password><!--(3)发布的路径,与tomcat管理目录中的路径对应,/表示发布到根目录--><path>/gengducun</path><!--<update>true</update>会将发布目录下的数据清空--><update>true</update></configuration></plugin></plugins></pluginManagement>

(1)在maven项目的插件配置pom.xml中配置项目远程部署的参数信息。(如上)
(2)启动远程部署

在这里插入图片描述

也可以建立专用的热部署任务
在这里插入图片描述

(3)在本地浏览器中访问远程服务器下的tomcat项目即可

8.1注意

(1)在使用maven远程部署项目时,一定要确保linux下的tomcat是开启的。
(2)tomcat:run命令表示的是在本地的tomcat中运行项目。
(3)tomcat:deploy命令表示的是将本地的Maven项目打包发布到远程服务器上的tomcat中进行部署,部署之后可以在浏览器中直接访问。所以在进行热部署之前一定要保证远程服务器的tomcat处于启动状态中,不然会失败。
(4)maven项目配置的tomcat插件和我们下载到本地的tomcat不是同一个。
(5)虽然现在Maven中央仓库中支持的tomcat插件只支持到tomcat7这个版本,但是可以利用这个插件对Web项目进行热部署,热部署到远程服务器的tomcat服务器上,远程服务器上的tomcat版本可以是更高的版本,比如说tomcat8、9、10或更高的版本中。

9.tomcat虚拟目录配置

(1)如果Web项目中用到了图片服务器与文件服务器,可以通过虚拟出图片服务器与文件服务器的方案临时解决图片或文件上传下载的功能需求。

(2)大公司都貌似有专署的图片服务器与文件服务器,不在本文的讨论范畴之列。

(3)通俗点来说,Web项目如果有图片或文件要上传,虚拟目录就是给这些图片或文件找个地方存起来,但是不暴露真实地存储路径,直接通过path配置的虚拟路径名称就可以映射到docBase对应的磁盘真实路径。

	      <Context docBase="E:\upload" path="/pic" reloadable="true"/><Context docBase="E:\download" path="/file" reloadable="true"/>

(4)注意:在tomcat的server.xml中配置虚拟目录的时候,不要加中文注释,不然无法启动tomcat。(这是我遇到的情况)

10.参考文档

参考文档

11.视频教程

视频教程1

视频教程2

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

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

相关文章

开源一款前后端分离的企业级网站内容管理系统,支持站群管理、多平台静态化,多语言、全文检索的源码

大家好&#xff0c;我是一颗甜苞谷&#xff0c;今天分享一款前后端分离的企业级网站内容管理系统&#xff0c;支持站群管理、多平台静态化&#xff0c;多语言、全文检索的源码。 前言 在当今的数字化时代&#xff0c;企业网站和个人博客已成为信息传播和品牌建设的重要渠道。…

mfc | mfc集成opencv,实现摄像头监控、拍照、视频图像处理(亮度、对比度、色调、饱和度)功能

这里是引用 文章目录 一、开发环境二、MFC项目创建三、集成opencv3.1 opencv安装3.2 添加项目属性3.3 测试OpenCV&#xff08;打开摄像头&#xff09;3.4 OPENCV视频嵌入到弹框中 四、关闭摄像头、拍照功能实现4.1 添加按钮4.2 添加全局静态变量4.3 关闭摄像头功能实现4.4 拍照…

Rust 力扣 - 289. 生命游戏

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们记录上一行和当前行转换之后的状态&#xff0c;当前行转换之后的状态计算完毕后调整上一行状态&#xff0c;直至最后一行状态计算完毕后调整最后一行状态 题解代码 pub fn game_of_life(board: &mut V…

【eNSP】华为ensp快速入门实验

一、安装准备 1. 检查和卸载已安装的软件 检查是否已经安装 eNSP 和依赖软件&#xff1a; 打开控制面板&#xff0c;点击“程序和功能”。 搜索列表中是否存在 eNSP 或依赖软件&#xff08;如 WinPcap、Wireshark&#xff09;。 卸载已安装的软件&#xff1a; 如果找到 e…

一:Linux学习笔记(第一阶段)-- 安装软件 vmware workstation 虚拟机软件 centos系统

目录 学习计划&#xff1a; 资源准备 虚拟机软件&#xff1a;就别自己找了 现在换网站了 下载比较费劲 Centos8&#xff1a; 阿里云镜像地址下载&#xff08;下载比较版 但是有不同版本&#xff09;&#xff1a;centos安装包下载_开源镜像站-阿里云 百度网盘地址&#xff…

Java项目:165 springboot人事管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 人事管理系统分为管理员和用户两部分操作角色 本次开发的人事管理系统实现了财务报销管理、字典管理、试卷表管理、试题表管理、考试记录表管理、答题…

单臂路由实现不同VLAN之间设备通信

转载请注明出处 本实验为单臂路由配置&#xff0c;目的为让不同VLAN之间的设备能够互相通信。 1.首先&#xff0c;按照要求配置两个pc的ip地址&#xff0c;以pc0为例子&#xff1a; 2在交换机创建vlan10和vlan20 3.划分vlan&#xff0c;pc0为vlan10的设备&#xff0c;pc1为vla…

【FL0013】基于SpringBoot和微信小程序的机电公司管理信息系统

&#x1f9d1;‍&#x1f4bb;博主介绍&#x1f9d1;‍&#x1f4bb; 全网粉丝10W,CSDN全栈领域优质创作者&#xff0c;博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战&#xff0c;以及程序定制化开发…

2024保姆级微信 AI 机器人教程:如何打造私人和群聊助手

欢迎点击领取 -《前端开发面试题进阶秘籍》&#xff1a;前端登顶之巅-最全面的前端知识点梳理总结 *分享一个使用比较久的&#x1fa9c; 大家好&#xff0c;我是SunnyRun 微信 AI 机器人-人工智能技术&#xff0c;为用户提供服务的自动化系统&#xff1a;具备自然语言处理能…

HyperWorks进阶教程:Altair及其软件介绍

1.1 Altair 简介 Allair是一家全球技术公司&#xff0c;在产品开发、高性能计算和数据智能领域提供软件和云解决方案自1985年成立以来一直致力于为企业的决策者和技术的执行者开发用于仿真分析、优化、信息可视化、流程自动化和云计算的高端技术。Altair 公司的总部位于美国密…

Halcon3D image_points_to_world_plane详解

分三个部分来聊聊这个算子 一,算子的参数介绍 二,算法的计算过程 三,举例实现 第一部分,算子的介绍 image_points_to_world_plane( : : CameraParam, WorldPose, Rows, Cols, Scale : X, Y) 参数介绍: CameraParam,:相机内参 WorldPose 世界坐标系,也叫物体坐标系(成…

使用GetX实现GetPage中间件

前言 GetX 中间件&#xff08;Middleware&#xff09;是 GetX 框架中的一种机制&#xff0c;用于在页面导航时对用户进行权限控制、数据预加载、页面访问条件设置等。通过使用中间件&#xff0c;可以有效地控制用户的访问流程&#xff0c;并在适当条件下引导用户到所需页面。 这…

[java][基础]HTTPTomcatServlet

1&#xff0c;Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网&#xff0c;也称为万维网(www)&#xff0c;能够通过浏览器访问的网站。 在我们日常的生活中&#xff0c;经常会使用浏览器去访问百度、京东、传智官网等这些网站&#xff0c;这些网站统称为Web网站。如下就是通…

CUDA环境安装终极指南——Linux(其它系统也一样)

文章目录 前言检查驱动配置nvcc安装cudnn完活 前言 不用看其它文章了&#xff0c;这篇文章保你不踩任何坑&#xff0c;安装方法简单快速 检查驱动 检查驱动是否安装&#xff0c;输入以下命令 nvidia-smi如果驱动已经安装&#xff0c;则可跳过此步&#xff0c;否则&#xff…

基于MATLAB的身份证号码识别系统

课题介绍 本课题为基于连通域分割和模板匹配的二代居民身份证号码识别系统&#xff0c;带有一个GUI人机交互界面。可以识别数十张身份证图片。 首先从身份证图像上获取0&#xff5e;9和X共十一个号码字符的样本图像作为后续识别的字符库样本&#xff0c;其次将待测身份证图像…

OpenCV—calcHist()函数

void calcHist( const Mat* images, int nimages,const int* channels, InputArray mask,SparseMat& hist, int dims,const int* histSize, const float** ranges,bool uniform true, bool accumulate false ); images 输入的数据指针&#xff0c;要具备相同的尺寸和数…

小米内外衣双区洗双洗烘洗衣机:洗出健康,还是洗出“噱头”

大家好&#xff0c;我是小悟。 在我们生活的这个科技飞速发展的时代&#xff0c;没有什么是一成不变的&#xff0c;就连洗衣机都在不断地推陈出新&#xff0c;生怕自己被时代的洪流甩在后面。这不&#xff0c;前不久&#xff0c;小米就又给我们带来了一款“划时代”的产品——…

MATLAB——矩阵操作

内容源于b站清风数学建模 数学建模清风老师《MATLAB教程新手入门篇》https://www.bilibili.com/video/BV1dN4y1Q7Kt/ 目录 1.MATLAB中的向量 1.1向量创建方法 1.2向量元素的引用 1.3向量元素修改和删除 2.MATLAB矩阵操作 2.1矩阵创建方法 2.2矩阵元素的引用 2.3矩阵…

C++STL——list

C教学总目录 list 1、list简介2、构造函数3、迭代器4、访问和容量函数5、修改类函数6、操作类函数 1、list简介 list是带头双向循环链表&#xff0c;也是模板类&#xff0c;使用时要指明类型&#xff0c;包含于头文件<list> 由于list是双向循环链表&#xff0c;在任意位置…

unocss 添加支持使用本地 svg 预设图标,并支持更改大小

安装 pnpm install iconify/utils 在配置文件 unocss.config.ts&#xff1a; presets > presetIcons 选项中 通过 FileSystemIconLoader 加载本地图标&#xff0c;并指定目录。 import presetWeapp from unocss-preset-weapp import { extractorAttributify, transformer…