栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

拆解Tomcat10: (七) 一套Tomcat程序中可以部署多个Server吗

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

拆解Tomcat10: (七) 一套Tomcat程序中可以部署多个Server吗

系列文章目录

拆解Tomcat10: (一) 如何快速的学习一门新的语言
拆解Tomcat10: (二) 在Idea中调试最新的Tomcat10源码
拆解Tomcat10: (三) 图解Tomcat的启动过程
拆解Tomcat10: (四) 图解架构
拆解Tomcat10: (五) 核心组件的初始化与设计模式解析
拆解Tomcat10: (六) 核心组件的生命周期管理与组合模式解析
拆解Tomcat10: (七)一套Tomcat程序中可以部署多个Server吗


文章目录

系列文章目录前言一、 下载Tomcat程序二、Tomcat目录结构解析

1. ①bin目录2. ②lib目录3. ③conf目录4. ④logs目录5. ⑤ temp目录6. ⑥ webapp目录7. ⑦ work目录8. ⑧ 一些说明文件 三、部署多个实例三、启动服务四、CATALINA_HOME与CATALINA_base总结


前言

前面的文章中,一个Tomcat下只有一个Server组件,那么会有多个的情况吗?

我们平时部署Tomcat一般都是在官网下载对应的安装程序或者绿色应用包,然后把对应的Web应用放置到webapp目录。当然对应的配置可以修改Server.xml文件。如果想在一台服务器上部署这样多套应用怎么办,也就是想部署多套Webapp、多个Server.xml、多个log文件管理…,当然你可以说,像部署一个一样部署多套就行了,监听多个不同的端口。这样是可以的,但如果需要升级Tomcat,那么就需要对每一套Tomcat进行升级,比较麻烦。是否可以一套Tomcat程序部署多套应用呢?这里涉及到了两个重要变量:CATALINA_base和CATALINA_HOME。

一、 下载Tomcat程序

官网下载地址:https://tomcat.apache.org/download-10.cgi,下载zip压缩包即可,如下图

(图一)

二、Tomcat目录结构解析

解压后的文件内容如下图:

(图二)

如上图二,将这些文件夹和文件大体可以按标识颜色分为三部分:

①和②红色数字标识的bin和lib两个目录是通用的文件目录;③至⑦以绿色数字标识的,这些文件夹可以被认为是server对应的特有目录;橙色数字⑧标识的是一些帮助或者license文件。 1. ①bin目录

内容如下图:

(图三)

如图其他软件的惯例,bin目录一般用于存放可执行文件。除了exe文件,还存放了启动、关闭Tomcat的脚本以及一些其他脚本。.sh结尾的为linux下执行命令,.bat结尾的为windows下执行命令。由于 Win32 命令行缺少某些功能,因此此处有一些其他文件。

catalina.sh:真正启动tomcat文件,可以在里面设置jvm参数。startup.sh:启动tomcat(需事先配置好JAVA_HOME环境变量才可启动,该命令源码实际执行的为catalina.sh start)。shutdown.sh:关闭tomcat。version.sh:查看tomcat版本相关信息… 2. ②lib目录

内容如下图:

(图四)

用于存放Tomcat依赖的一些jar包。

3. ③conf目录

(图五)

conf,顾名思义就是存放配置文件的目录。这个我们都很熟悉,特别是server.xml文件,经常会修改其中的一些配置,它也是容器的主配置文件。

4. ④logs目录

这个目录默认是空的,用于存放日志文件。

5. ⑤ temp目录

这个目录用于存放运行时产生的一些临时文件。

6. ⑥ webapp目录

我们熟悉的放置网站文件的目录,默认情况下有示例程序在其中,如下图。

(图六)

7. ⑦ work目录

这个目录用于存放tomcat在运行时的编译后文件,例如JSP编译后的文件。

8. ⑧ 一些说明文件

图二的最下部分用黄框标识的文件为一些帮助文件。例如LICENSE、升级日志、编译方法等。

(图七

三、部署多个实例

按照图二的数字标识颜色,将绿色标识的文件夹剪切出来,分别放置为D:server1和E:server2两个拷贝,如下两幅图:

(图八)

(图九)

剩余文件在F:apache-tomcat-10.0.16,见下图

(图十)

这样相当于是两个实例server1和server2共用一套bin和lib文件。而server1和server2的目录中只放置和自身server相关的文件。

当然server1和server2不可能使用相同的端口,会发生端口冲突,现在将server2的端口修改一下,修改server2的server.xml文件,主要涉及Server和Connector两个节点:

修改Server的shutdown端口:

(图十一)

将默认的8005改为了8006.

修改Connector的监听端口:

(图十二)

将默认的8080改为了8081。redirectPort用于当请求ssl资源时使用,默认8443,此处不涉及ssl部署,可以不修改,若用到则按需修改。

三、启动服务

打开CMD命令,定位到F:apache-tomcat-10.0.16bin目录:

cd F:apache-tomcat-10.0.16bin

启动server1:

设置变量CATALINA_base指向server1的目录:

set CATALINA_base=d:server1

调用catalina.bat启动服务:

catalina.bat start

(图十三)

执行结果如上图,可见采用了设置的CATALINA_base=d:server1的值,另一个变量CATALINA_HOME采用了F:apache-tomcat-10.0.16。

类似方式启动server2:

设置变量CATALINA_base指向server2的目录:

set CATALINA_base=e:server2

调用catalina.bat启动服务:

catalina.bat start

(图十四)

执行结果如上图,可见采用了设置的CATALINA_base=e:server2的值,另一个变量CATALINA_HOME仍然采用了F:apache-tomcat-10.0.16。

分别访问http://localhost:8080和http://localhost:8081,可见两个服务均已启动成功,如下图:

(图十五)

注:为了方便,可以将上述命令编写到bat文件中。

四、CATALINA_HOME与CATALINA_base

通过上面的例子可知,部署两个server的关键是CATALINA_base变量。 对应这个变量还有个CATALINA_HOME,二者什么关系呢?官方文档:Apache Tomcat 10 (10.0.16) - Introduction中有对应的说明,简要说一下:

CATALINA_HOME:表示 Tomcat 安装的根目录,也就是上文说的公有文件的目录,即F:apache-tomcat-10.0.16CATALINA_base:表示特定 Tomcat 实例的运行时配置的根。即上例中的d:server1和e:server2两个目录。

d:server1和e:server2两个目录是从原来的F:apache-tomcat-10.0.16文件夹拆分出来的,所以默认情况下,如果不做拆分,这两个值应该是一样的,即都是F:apache-tomcat-10.0.16。

为什么使用CATALINA_base?

默认情况下,CATALINA_HOME和CATALINA_base指向同一目录。当您需要在一台计算机上运行多个 Tomcat 实例时,手动设置CATALINA_base。这样做具有以下优点:

更轻松地管理升级到较新版本的 Tomcat。由于具有单个CATALINA_HOME位置的所有实例共享一组文件和二进制文件,因此您可以轻松地将文件升级到较新版本,并将更改传播到使用同一CATALIA_HOME目录的所有 Tomcat 实例。避免重复相同的bin、lib文件夹的文件。共享某些设置的可能性,例如 shell 或 bat 脚本文件(取决于您的操作系统)`

总结

前面的文章中,一个Tomcat下只有一个Server组件,本文展示了可以设置多个的情况,那么除了这种方式,还有什么方式可以部署多个网站呢?Tomcat和Server的对应关系是什么?一对多?多对多?后面的文章继续讨论。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/731276.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号