tomcat – CATALINA_BASE和CATALINA_HOMEvariables
我有多个在同一台服务器(Linux)上运行的tomcat 6实例,它按预期工作。 我正在试图找出设置CATALINA_HOME
和CATALINA_BASE
variables的标准做法。
在我的tomcat安装中,我设置了CATALINA_HOME
来指向一个“common”文件夹(比如说/tomcat6
), CATALINA_BASE
variables取决于实例名称(比如/tomcat_instance1
, /tomcat_instance2
)
我的问题是这样的:
- 我真的需要两个variables吗?
- 或者我可以只有一个
CATALINA_HOME
,并取消CATALINA_BASE
(反之亦然)?
如果在单个主机上运行多个Tomcat实例,则应将CATALINA_BASE
设置为等于适用于每个实例的.../tomcat_instance1
或.../tomcat_instance2
目录,并将常见Tomcat安装的CATALINA_HOME
环境variables设置为其文件将在两个实例之间共享。
如果您在主机上运行单个Tomcat实例,则CATALINA_BASE
环境是可选的,在这种情况下默认为CATALINA_HOME
。 如果您正在运行多个实例,则应该提供它。
在Apache Tomcat发行版的根目录下的RUNNING.txt
文件中,标题为Advanced Configuration – Multiple Tomcat Instances
CATALINA_HOME
和CATALINA_BASE
如果你正在运行多个实例,那么你需要两个variables,否则只需要CATALINA_HOME
。
换句话说: CATALINA_HOME
是必需的, CATALINA_BASE
是可选的。
CATALINA_HOME
表示Tomcat安装的根目录。
或者,可以通过为每个实例定义
$CATALINA_BASE
来为多个实例configurationTomcat。 如果没有configuration多个实例,则$CATALINA_BASE
与$CATALINA_HOME
相同。
请参阅: Apache Tomcat 7 – 简介
在单独的CATALINA_HOME
和CATALINA_BASE
运行,在RUNNING.txt文档中有说明:
CATALINA_HOME
和CATALINA_BASE
环境variables分别用于指定Apache Tomcat的位置及其活动configuration的位置。您不能在
setenv
脚本中configurationCATALINA_HOME
和CATALINA_BASE
variables,因为它们用于查找该文件。
例如:
(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
环境variables设置为包含“个人”Tomcat实例文件的目录。当使用单独的
CATALINA_HOME
和CATALINA_BASE
运行时,文件和目录分割如下:在
CATALINA_BASE
:
bin
– 只有:setenv.sh(* nix)或setenv.bat(Windows),tomcat-juli.jarconf
– 服务器configuration文件(包括server.xml)lib
– 库和类,如下所述logs
– logging和输出文件webapps
– 自动加载的Web应用程序work
– Web应用程序的临时工作目录temp
– JVM用于临时文件的目录>在
CATALINA_HOME
:
bin
– 启动和closures脚本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
工具(Debian / Ubuntu)来检查Tomcat文件的安装位置:
dpkg -L tomcat7-common
我不能说我知道最好的做法,但这是我的观点。
你是否使用这些variables的任何东西?
就我个人而言,在Linux和Windows上,在开发和生产环境中都不需要改变。 除非你正在做一些依赖于他们的东西,否则你可能会让他们独处。
catalina.sh
设置了Tomcat需要工作的variables。 它还说CATALINA_BASE
是可选的:
# CATALINA_HOME May point at your Catalina "build" directory. # # CATALINA_BASE (Optional) Base directory for resolving dynamic portions # of a Catalina installation. If not present, resolves to # the same directory that CATALINA_HOME points to.
我很肯定你会发现当你启动你的服务器时你的设置是否工作。
这与多个实例无关。 这两个环境variables允许您将Tomcat二进制文件与Tomcatconfiguration文件分开。
默认情况下, CATALINA_BASE
(configuration)和CATALINA_HOME
(二进制文件)指向相同的文件夹。
但是,将CATALINA_BASE
指向另一个目录允许您将configuration目录从CATALINA_HOME
指向的二进制文件目录中分离出来。
当您想要更新二进制文件而无需修改,或者需要为Tomcat备份/恢复configuration文件,或者希望以不同的configuration并排运行多个Tomcat实例时,这非常有用。
要利用此function,只需创buildconfig目录并使用CATALINA_BASE
环境variables指向它即可。 你将不得不把一些文件在该目录中:
- 复制原始Tomcat安装目录中的
conf
目录(包括其内容),并确保Tomcat具有对其的读取权限。 根据您的需要编辑configuration文件。 - 如果
conf/logging.properties
指向${catalina.base}/logs
,并确保Tomcat具有对其的读/写权限,则创build一个logs
目录。 - 如果您不重写
$CATALINA_TMPDIR
指向${CATALINA_BASE}/temp
的默认值,并确保Tomcat具有对其的写入权限,则创build一个temp
目录。 - 创build一个默认为
${CATALINA_BASE}/work
的work
目录,并确保Tomcat具有对其的写入权限。
CATALINA_BASE是可选的。
但是,在以下情况下,有助于设置与CATALINA_HOME分开的CATALINA_BASE。
-
在同一主机上运行多个tomcat实例时
- 这有助于只有1个运行时间的tomcat安装,多个CATALINA_BASE服务器configuration运行在不同的端口上。
- 如果需要进行任何修补或版本升级,则只需要进行一次安装更改,或者需要进行testing/validation/签名。
-
分离关注(单一责任)
- Tomcat运行时是标准的,在每个发布过程中都不会改变。 即Tomcat的二进制文件
- 发布过程可能会添加更多的东西作为web应用程序(webapps文件夹),环境configuration(conf目录),日志/ temp /工作目录
这是包含tomcat.exe文件的bin的父文件夹:
CATALINA_HOME='C:\Program Files\Apache Software Foundation\Tomcat 6.0'
CATALINA_BASE
与CATALINA_HOME
相同。