tomcat - CATALINA_BASE和CATALINA_HOME变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat - CATALINA_BASE和CATALINA_HOME变量相关的知识,希望对你有一定的参考价值。

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

在我的tomcat安装中,我设置CATALINA_HOME指向“common”文件夹(比如/tomcat6),CATALINA_BASE变量根据实例名称而变化(比如/tomcat_instance1/tomcat_instance2

我的问题是:

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

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

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

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

另一答案

CATALINA_HOME vs CATALINA_BASE

如果你正在运行多个实例,那么你需要两个变量,否则只需要CATALINA_HOME

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

CATALINA_HOME代表Tomcat安装的根目录。

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

见:Apache Tomcat 7 - Introduction

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

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

您无法在CATALINA_HOME脚本中配置CATALINA_BASEsetenv变量,因为它们用于查找该文件。

例如:

(4.1)可以通过执行以下命令之一来启动Tomcat:

  %CATALINA_HOME%instartup.bat         (Windows)

  $CATALINA_HOME/bin/startup.sh           (Unix)

要么

  %CATALINA_HOME%incatalina.bat start  (Windows)

  $CATALINA_HOME/bin/catalina.sh start    (Unix)

Multiple Tomcat Instances

在许多情况下,希望在同一服务器上的多个用户之间共享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 - 覆盖标准“认可标准”的图书馆。默认情况下,它不存在。

How to check

检查你的CATALINA_BASECATALINA_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
另一答案

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

你在使用这些变量吗?

就个人而言,我不需要在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_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环境变量指向它。您必须在该目录中放置一些文件:

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

CATALINA_BASE是可选的。

但是,在以下方案中,有助于设置与CATALINA_HOME分开的CATALINA_BASE。

  1. 当多个tomcat实例在同一主机上运行时 这有助于只有1个运行时的tomcat安装,多个CATALINA_BASE服务器配置在不同的端口上运行。 如果需要任何修补或版本升级,则只需要进行一次安装更改,或者需要进行测试/验证/签名。
  2. 分离关注(单一责任) Tomcat运行时是标准的,在每个发布过程中都不会更改。即Tomcat二进制文件 发布过程可能会添加更多内容,如webapplication(webapps文件夹),环境配置(conf目录),logs / temp / work目录
另一答案

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

CATALINA_HOME='C:Program FilesApache Software FoundationTomcat 6.0'

CATALINA_BASECATALINA_HOME相同。

以上是关于tomcat - CATALINA_BASE和CATALINA_HOME变量的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat安装与配置教程

catalina_home与catalina_base

Java+Tomcat+Servlet实现页面访问

CATALINA_BASE与CATALINA_HOME的区别

同一台机器配置多个tomcat服务器

Mac 上 Tomcat 8 的 CATALINA_BASE/webapps 文件夹在哪里?