tomcat - CATALINA_BASE和CATALINA_HOME变量

sou*_*ser 91 java tomcat environment-variables

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

在我的tomcat安装,我已经设置CATALINA_HOME为指向一个"共同"的文件夹(比如/tomcat6)和CATALINA_BASE可变取决于实例名称(比如不同/tomcat_instance1,/tomcat_instance2)

我的问题是:

  • 我真的需要两个变量吗?
  • 或者我可以只有一个CATALINA_HOME并取消 CATALINA_BASE(反之亦然)?

Rus*_*uss 98

如果在单个主机上运行多个Tomcat实例,则应将其设置为适合每个实例CATALINA_BASE.../tomcat_instance1or或.../tomcat_instance2directory,并将CATALINA_HOME环境变量设置为常用Tomcat安装,其文件将在两个实例之间共享.

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

高级配置 - 多个Tomcat实例RUNNING.txt标题下的Apache Tomcat发行版的根目录中的文件中有一个非常好的描述


ken*_*orb 77

CATALINA_HOME VS CATALINA_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)
Run Code Online (Sandbox Code Playgroud)

要么

  %CATALINA_HOME%\bin\catalina.bat start  (Windows)

  $CATALINA_HOME/bin/catalina.sh start    (Unix)
Run Code Online (Sandbox Code Playgroud)

多个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
Run Code Online (Sandbox Code Playgroud)

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

dpkg -L tomcat7-common
Run Code Online (Sandbox Code Playgroud)

  • 这是一个更好的答案接受.很好解释. (7认同)

Lau*_*nen 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.
Run Code Online (Sandbox Code Playgroud)

我很确定你会在启动服务器时发现你的设置是否有效.


isa*_*pir 7

指向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具有写入权限.