Tomcat-CATALINA_BASE和CATALINA_HOME变量


97

我在同一台服务器(Linux)上运行了多个tomcat 6实例,并且按预期工作。我试图找出关于设置CATALINA_HOMECATALINA_BASE变量的标准做法。

在我的tomcat安装,我必须设置CATALINA_HOME为指向“共同”的文件夹(比如/tomcat6)和CATALINA_BASE可变取决于实例名称变化(比如/tomcat_instance1/tomcat_instance2

我的问题是这样的:

  • 我真的需要两个变量吗?
  • 还是我可以只拥有一个CATALINA_HOME并消除它 CATALINA_BASE(反之亦然)?

3
问题本身就是答案。
Koray Tugay 2014年

4
您需要执行此操作的原因是,将Tomcat软件(位于中$CATALINA_HOME)的维护与Tomcat实例配置和内容(位于中的维护)分开$CATALINA_BASE
reinierpost

Answers:


106

如果要在单个主机上运行Tomcat的多个实例,则应将其设置CATALINA_BASE为等于.../tomcat_instance1.../tomcat_instance2适用于每个实例的目录,并将CATALINA_HOME环境变量设置为通用Tomcat安装的环境,其文件将在两个实例之间共享。

CATALINA_BASE如果您在主机上运行单个Tomcat实例,则该环境是可选的,CATALINA_HOME在这种情况下,默认环境为。如果您正在运行多个实例,则应提供该实例。

RUNNING.txtApache Tomcat发行版根目录下的文件中的“ 高级配置-多个Tomcat实例 ”标题下对此设置有很好的描述。


1
在Ubuntu上使用打包的Tomcat时,第二段不正确。它将Tomcat软件(在$ CATALINA_HOME中)与Tomcat实例(在$ CATALINA_BASE中)正确分开。
reinierpost

84

CATALINA_HOMECATALINA_BASE

如果您要运行多个实例,则需要两个变量,否则仅需要CATALINA_HOME

换句话说:CATALINA_HOME是必需的,CATALINA_BASE是可选的。

CATALINA_HOME 代表Tomcat安装的根目录。

(可选)可以通过$CATALINA_BASE为每个实例定义Tomcat将其配置为多个实例。如果未配置多个实例,$CATALINA_BASE则与相同$CATALINA_HOME

请参阅:Apache Tomcat 7-简介

单独运行,CATALINA_HOMECATALINA_BASE记录在RUNNING.txt中,其中说:

CATALINA_HOMECATALINA_BASE环境变量用于指定的Apache Tomcat的位置和它的活动配置的位置,分别。

您无法在脚本中配置CATALINA_HOMECATALINA_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.jar
  • conf -服务器配置文件(包括server.xml)
  • lib -图书馆和课程,如下所述
  • logs -日志和输出文件
  • webapps -自动加载的Web应用程序
  • 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以下工具(Debian / Ubuntu)检查Tomcat文件的安装位置:

dpkg -L tomcat7-common

8
这是公认的更好的答案。很好解释。
dkanejs '16

请说明如何使用不同的CATALINA_BASE启动多个tomcat实例?
标记

必须将CATALINA_BASE和CATALINA_HOME设置为系统变量:Windows:设置CATALINA_BASE = path
标记

11

我不能说我知道最佳实践,但这是我的观点。

是否将这些变量用于任何用途?

就个人而言,在从开发到生产的各种环境中,我都不需要在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.

我很确定您将在启动服务器时查明您的设置是否有效。


您可以catalina_home\bin\catalina.sh两个tomcat实例的文件中设置路径吗?
吉里(Giri)2015年

8

指向以外CATALINA_BASE的目录CATALINA_HOME允许您将配置目录与二进制文件目录分开。

默认情况下,CATALINA_BASE(配置)和CATALINA_HOME(二进制文件)指向同一文件夹,但是将配置文件与二进制文件分开可以帮助您并行运行多个Tomcat实例,而无需复制二进制文件。

当您想要更新二进制文件而不修改或需要备份/恢复Tomcat的配置文件时,它也很有用。

更新2018

现在可以使用该makebase实用程序更轻松地设置CATALINA_BASE 。我在http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-tomcat.html中发布了涵盖此主题的教程,并在https://youtu.be上提供了视频教程。 / nuugoG5c-7M

原始答案在下面继续

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

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

1

CATALINA_BASE是可选的。

但是,在以下情况下,它有助于设置与CATALINA_HOME分开的CATALINA_BASE。

  1. 当同一主机上运行了1个以上的tomcat实例时

    • 这仅有助于1个tomcat安装运行时,并且多个CATALINA_BASE服务器配置在单独的端口上运行。
    • 如果需要任何修补程序或版本升级,则只需要进行1个安装更改,或者需要进行测试/验证/签名。
  2. 关注点分离(单一责任)

    • Tomcat运行时是标准的,并且在每个发行过程中都不会更改。即Tomcat二进制文件
    • 发布过程可能会添加更多内容,例如web应用程序(webapps文件夹),环境配置(conf目录),logs / temp / work目录

-5

那是bin的父文件夹,其中包含tomcat.exe文件:

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

CATALINA_BASE与相同CATALINA_HOME


2
您的答案有误导性...正确答案应为:如果未配置多个实例,则根据文档
Eddie B

1
仅当您运行根实例时,CATALINA_BASE才等于CATALINA_HOME。当您有多个实例时,情况会有所不同。
2015年

1
我想说的是即使您只有一个实例,CATALINA_BASE和CATALINA HOME也应该不同。这样,您的内容便与安装分离。例如,/ usr / share / tomcat中的CATALINA_HOME和/ var / lib / tomcat中的CATALINA_BASE
2015年

没有。对于多实例,它可以相同,但可以不相同。
Andrey Regentov
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.