java Tomcat - Catalina _BASE和CATALINA_HOME变量

bfnvny8b  于 2023-04-04  发布在  Java
关注(0)|答案(6)|浏览(205)

我在同一台服务器(Linux)上运行了多个tomcat 6示例,它按预期工作。我试图找出设置CATALINA_HOMECATALINA_BASE变量的标准做法是什么。
在我的tomcat安装中,我设置CATALINA_HOME指向一个“公共”文件夹(比如/tomcat6),CATALINA_BASE变量根据示例名称而变化(比如/tomcat_instance1/tomcat_instance2
我的问题是:

  • 我真的需要两个变量吗?
  • 或者我可以只拥有一个CATALINA_HOME,而放弃CATALINA_BASE(反之亦然)吗?
ykejflvf

ykejflvf1#

如果在一台主机上运行多个Tomcat示例,则应将CATALINA_BASE设置为每个示例的相应目录.../tomcat_instance1.../tomcat_instance2,并将CATALINA_HOME环境变量设置为通用Tomcat安装,其文件将在两个示例之间共享。
如果您在主机上运行单个Tomcat示例,则CATALINA_BASE环境是可选的,并且在这种情况下将默认为CATALINA_HOME。如果您正在运行多个示例,则应该提供它。
在Apache Tomcat发行版根目录下的RUNNING.txt文件中,标题为Advanced Configuration - Multiple Tomcat Instances的文件中,对这种设置有很好的描述
另请参阅Apache Tomcat 10/Introduction/ Catalina _HOME和CATALINA_BASE的文档。

bxpogfeg

bxpogfeg2#

CATALINA_HOME vs CATALINA_BASE

如果运行多个示例,则需要两个变量,否则只需要CATALINA_HOME
换句话说:CATALINA_HOME是必需的,CATALINA_BASE是可选的。
CATALINA_HOME代表Tomcat安装的根目录。
可选地,Tomcat可以配置多个示例,为每个示例定义$CATALINA_BASE。如果没有配置多个示例,则$CATALINA_BASE$CATALINA_HOME相同。
参见:Apache Tomcat 7 - Introduction
使用单独的CATALINA_HOMECATALINA_BASE运行记录在RUNNING.txt中,内容如下:
CATALINA_HOMECATALINA_BASE环境变量分别用于指定ApacheTomcat的位置及其活动配置的位置。
不能在setenv脚本中配置CATALINA_HOMECATALINA_BASE变量,因为它们用于查找该文件。
例如:
(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_HOMECATALINA_BASE运行时,文件和目录拆分如下:
CATALINA_BASE中:

  • bin-仅:setenv.sh(*nix)或setenv.bat(Windows)、tomcat-juli.jar
  • conf-服务器配置文件(包括server.xml)
  • lib-库和类,如下所述
  • logs-日志和输出文件
  • webapps-自动加载的Web应用程序
  • work-Web应用程序的临时工作目录
  • temp-JVM用于临时文件的目录〉

CATALINA_HOME中:

  • bin-启动和关闭脚本
  • lib-库和类,如下所述
  • endorsed-覆盖标准“认可标准”的库。默认情况下不存在。

如何检查

检查CATALINA_BASECATALINA_HOME的最简单方法是运行startup.sh,例如:

$ /usr/share/tomcat7/bin/startup.sh
Using CATALINA_BASE:   /usr/share/tomcat7
Using CATALINA_HOME:   /usr/share/tomcat7

您也可以检查Tomcat文件的安装位置,通过dpkg工具如下(Debian/Ubuntu):

dpkg -L tomcat7-common
blmhpbnm

blmhpbnm3#

通过将CATALINA_BASE指向与CATALINA_HOME不同的目录,可以将配置目录与二进制文件目录分开。
默认情况下,CATALINA_BASE(配置)和CATALINA_HOME(二进制文件)指向同一个文件夹,但是将配置与二进制文件分开可以帮助您并行运行Tomcat的多个示例,而无需复制二进制文件。
当您想更新二进制文件而不需要修改或需要备份/恢复Tomcat的配置文件时,它也很有用。

2018年更新

现在有一个更简单的方法来设置 Catalina _BASE,使用makebase实用程序。

原答案续下文

要利用此功能,只需创建config目录并使用CATALINA_BASE环境变量指向它。您必须将一些文件放入该目录:

  • 从原始Tomcat安装目录复制conf目录,包括其内容,并确保Tomcat对其具有读取权限。根据需要编辑配置文件。
  • 如果conf/logging.properties指向${catalina.base}/logs,则创建一个logs目录,并确保Tomcat对其具有读/写权限。
  • 如果您没有覆盖指向${CATALINA_BASE}/temp的默认$CATALINA_TMPDIR,请创建一个temp目录,并确保Tomcat对其具有写入权限。
  • 创建一个默认为${CATALINA_BASE}/workwork目录,并确保Tomcat对其具有写权限。
liwlm1x9

liwlm1x94#

我不能说我知道最好的做法,但这是我的观点。


就我个人而言,在Linux和Windows上,在从开发到生产的各种环境中,我都不需要改变。除非你正在做一些特别依赖它们的事情,否则你可以不去管它们。
catalina.sh设置了Tomcat需要的变量。它还说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.

我很肯定,当您启动服务器时,您会发现您的设置是否有效。

fhg3lkii

fhg3lkii5#

Catalina _BASE是可选的。
但是,在以下情况下,设置与CATALINA_HOME分开的CATALINA_BASE会有所帮助。

  • 当同一主机上运行超过1个tomcat示例时
  • 这有助于只有一个运行时的tomcat安装,多个 Catalina _BASE服务器配置运行在不同的端口上。
  • 如果需要任何修补或版本升级,则仅需要1个安装更改,或需要进行测试/验证/签核。
  • 关注点分离(单一责任)
  • Tomcat运行时是标准的,在每个发布过程中都不会改变。
  • 发布过程中可能会添加更多的东西,如webapplication(webapps文件夹),环境配置(conf目录),logs/temp/work目录
rhfm7lfc

rhfm7lfc6#

这是包含tomcat.exe文件的bin的父文件夹:

CATALINA_HOME='C:\Program Files\Apache Software Foundation\Tomcat 6.0'

CATALINA_BASECATALINA_HOME相同。

相关问题