关于CATALINA_HOME 和 CATALINA_BASE 的区别
官方文档
*以下内容从官方复制出来的*
目录和文件
这些是一些重要的tomcat目录:
- /bin -(启动,关闭和其他脚本)
- /conf -配置文件和相关DTD,这里最重要的文件是server.xml,它是容器的主要配置文件.
- /logs - 日志文件默认目录.
- /webapps - Web应用程序的目录.
CATALINA_HOME 和 CATALINA_BASE
在整个文档中,都引用了以下两个属性:
- CATALINA_HOME: 表示Tomcat安装的根目录,例如 /home/tomcat/apache-tomcat-9.0.10 or C:\Program Files\apache-tomcat-9.0.10.
- CATALINA_BASE: 表示特定Tomcat实例的运行时配置的根。 如果要在一台计算机上拥有多个Tomcat实例,请使用CATALINA_BASE属性
- 如果将属性设置为其他位置,则
CATALINA_HOME位置将包含静态源,例如.jar文件或二进制文件。
CATALINA_BASE位置包含配置文件,日志文件,已部署的应用程序和其他运行时要求。
- 如果将属性设置为其他位置,则
为什么要使用CATALINA_BASE
默认情况下,CATALINA_HOME和CATALINA_BASE指向同一目录。需要在一台计算机上运行多个Tomcat实例时,手动设置CATALINA_BASE。
这样做具有以下好处:
- 升级到较新版本的Tomcat的管理更加轻松.因为所有具有单个CATALINA_HOME位置的实例共享一组.jar文件和二进制文件,所以您可以轻松地将文件升级到较新版本,并使用同一CATALIA_HOME目录将更改传播到所有Tomcat实例,也就是只用升级CATALINA_HOME目录下的文件就可以升级所有的Tomcat.
- 避免重复相同的静态.jar文件.
- 共享某些设置的可能性,例如setenv shell或bat脚本文件(取决于您的操作系统).
Contents of CATALINA_BASE(CATALINA_BASE的内容)
在开始使用CATALINA_BASE之前,请首先考虑并创建CATALINA_BASE使用的目录树。请注意,如果未创建所有建议的目录,则Tomcat会自动创建目录。如果由于权限问题而无法创建必要的目录,Tomcat将无法启动,或者可能无法正常运行.
考虑以下目录列表:
- bin: 包含setenv.sh,setenv.bat和tomcat-juli.jar文件的bin目录
Recommended: No(不推荐).
查找顺序:首先检查CATALINA_BASE;向CATALINA_HOME提供后备 - lib: 具有更多资源的lib目录将添加到classpath上.
Recommended: Yes(推荐), 如果您的应用程序依赖于外部库.
查找顺序:首先检查CATALINA_BASE; 然后加载CATALINA_HOME. - logs: 特定于实例的日志文件的日志目录.
Recommended: Yes(推荐) - webapps: 用于自动加载的Web应用程序的webapps目录
Recommended: Yes(推荐), 如果您想部署应用程序
查找顺序:仅CATALINA_BASE - work: 工作目录,其中包含已部署的Web应用程序的临时工作目录。
Recommended: Yes(推荐) - temp: JVM用于临时文件的temp目录.
Recommended: Yes(推荐)
我们建议您不要更改tomcat-juli.jar文件. 但是,如果您需要自己的日志记录实现,则可以将CATALINA_BASE位置中的tomcat-juli.jar文件替换为特定的Tomcat实例.
我们还建议您将所有配置文件从CATALINA_HOME的conf目录复制到CATALINA_BASE的conf目录。如果CATALINA_BASE中缺少配置文件,则不会回退到CATALINA_HOME。因此,这可能会导致故障.
至少CATALINA_BASE必须包含以下两个文件:
conf/server.xml
conf/web.xml
How to Use CATALINA_BASE(如何使用CATALINA_BASE)
CATALINA_BASE属性是一个环境变量。您可以在执行Tomcat启动脚本之前进行设置,例如:
- On Unix: CATALINA_BASE=/tmp/tomcat_base1 bin/catalina.sh start
- On Windows: CATALINA_BASE=C:\tomcat_base1 bin/catalina.bat start