我找不到明确的答案,为什么 Ubuntu 会设置CATALINA_BASE
环境变量,使其不同于CATALINA_HOME
。我发现这个文件这表明不设置CATALINA_BASE
将使其等同于。该文档还建议进行CATALINA_HOME
设置以使多个实例可用。CATALINA_BASE
但是,我似乎找不到任何可以解释这一点的东西。大概是,单机运行CATALINA_HOME
很长时间都很好,但 Ubuntu 切换了。
我发现这个问题与启发性的答案在 AskUbuntu 上,但没有太多关于CATALINA_HOME
vs 的具体信息CATALINA_BASE
。这个问题确实提到了“appBase”参数,它是记录在 Tomcat6 文档中有关配置文件中的 Host 容器。
问题如下:为什么要将这两个变量分开?什么时候应该将它们分开?这样管理员可以做什么?然后您将什么放入每个目录中?这两个变量什么时候应该相同?ASF 推荐的标准做法是什么?
答案1
为什么这两个变量是分开的?
catalina.home 指向公共信息的位置。catalina.base
指向所有实例具体信息已保存。
因此,您有 1 个家,但可以拥有超过 1 个基地。
什么时候应该把它们分开?什么时候这两个变量应该相同?
如果您有 1 个 tomcat,则可以将它们设置为相同的值,但良好的做法是建议您提前计划并将它们分开:您永远不知道是否需要多个 tomcat。Ubuntu 开始遵循这种思维方式,因为它更合乎逻辑:它使运行 2 个以上的 tomcat 变得更容易,但不会禁用运行 1 个 tomcat,如果将它们都设置为相同的值,则需要每个人都编辑基值。保持它们不同更有意义。
这允许管理员做什么?
允许同时运行多个 tomcat,每个 tomcat 实例可以拥有自己的应用程序。
那么,您将什么放入每个目录中?
Home 包含二进制文件。Base
包含 conf、logs、webapps、work 和 temp。每个 tomcat 实例各 1 个。
答案2
CATALINA_HOME
对比CATALINA_BASE
如果您正在运行多个实例,则需要两个变量,否则只需要CATALINA_HOME
。
换句话说:CATALINA_HOME
是必需的,也是CATALINA_BASE
可选的。
CATALINA_HOME
代表 Tomcat 安装的根目录。
可选地,可以通过为每个实例定义来为 Tomcat 配置多个实例
$CATALINA_BASE
。如果没有配置多个实例,$CATALINA_BASE
则与 相同$CATALINA_HOME
。
单独运行CATALINA_HOME
并CATALINA_BASE
记录在 RUNNING.txt 中,其中说明:
CATALINA_HOME
和环境变量CATALINA_BASE
分别用于指定 Apache Tomcat 的位置和其活动配置的位置。您无法在脚本中配置
CATALINA_HOME
和CATALINA_BASE
变量setenv
,因为它们用于查找该文件。
例如:
(4.1)可以通过执行以下命令之一来启动 Tomcat:
%CATALINA_HOME%\bin\startup.bat (Windows) $CATALINA_HOME/bin/startup.sh (Unix)
或者
%CATALINA_HOME%\bin\catalina.bat start (Windows) $CATALINA_HOME/bin/catalina.sh start (Unix)
多个 Tomcat 实例
在许多情况下,希望在同一台服务器上的多个用户之间共享 Tomcat 二进制分发的单个副本。为了实现这一点,您可以将
CATALINA_BASE
环境变量设置为包含“个人”Tomcat 实例文件的目录。当使用单独的
CATALINA_HOME
和运行时CATALINA_BASE
,文件和目录将按如下方式拆分:在
CATALINA_BASE
:
bin
- 仅限:setenv.sh (*nix) 或 setenv.bat (Windows)、tomcat-juli.jarconf
- 服务器配置文件(包括server.xml)lib
- 库和类,如下所述logs
- 日志和输出文件webapps
- 自动加载网络应用程序work
- Web 应用程序的临时工作目录temp
- JVM 用于临时文件的目录>在
CATALINA_HOME
:
bin
- 启动和关闭脚本lib
- 库和类,如下所述endorsed
- 覆盖标准“认可标准”的库。默认情况下不存在。
如何检查
检查你的CATALINA_BASE
和的最简单方法CATALINA_HOME
是运行startup.sh
,例如:
$ /usr/share/tomcat7/bin/startup.sh
Using CATALINA_BASE: /usr/share/tomcat7
Using CATALINA_HOME: /usr/share/tomcat7
您还可以使用dpkg
以下工具检查 Tomcat 文件的安装位置(Debian/Ubuntu):
dpkg -L tomcat7-common
答案3
除了是运行两个 tomcat 实例的最佳方式之外,它还使更新变得更加容易。
我正在使用这个设置。
<!-- language: bash -->
/opt/apache-tomcat-7.0-32
/opt/apache-tomcat-7.0.39
/opt/apache-tomcat-7 (simbolic link to apache-tomcat-7.0.32)
CATALINA_HOME=/opt/apache-tomcat-7
/srv/user_deploys/tomcat_product_a
/srv/user_deploys/tomcat_product_b
CATALINA_BASE
指向一个或另一个部署目录。
基本二进制文件和库只需/opt/
复制server.xml
(web.xml
和一些其他文件,请阅读文档),并创建目录 bin、logs、webapps、temp、work(RTLM,L 很可爱,请)
您可以通过修改CATALINA_HOME
每个实例的 $CATALINA_BASE/bin/setenv.sh 文件来更新 tomcat 二进制文件,或者您也可以修改符号链接,“全局”更新二进制文件
即使只有一个实例,更新也更容易。