我在同一台服务器(Linux)上运行了多个tomcat 6实例,它按预期工作。我正在尝试找出有关设置CATALINA_HOME
和CATALINA_BASE
变量的标准做法。
在我的tomcat安装中,我已将CATALINA_HOME
设置为指向“常用”文件夹(例如/tomcat6
),CATALINA_BASE
变量因实例名称而异(例如{{ 1}},/tomcat_instance1
)
我的问题是:
/tomcat_instance2
并取消
CATALINA_HOME
(反之亦然)?答案 0 :(得分:90)
如果您在单个主机上运行多个Tomcat实例,则应将CATALINA_BASE
设置为等于.../tomcat_instance1
或.../tomcat_instance2
目录,以适合每个实例和{{1环境变量到常见的Tomcat安装,其文件将在两个实例之间共享。
如果您在主机上运行单个Tomcat实例,则CATALINA_HOME
环境是可选的,在这种情况下默认为CATALINA_BASE
。如果您正在运行多个实例,则应该提供它。
在标题高级配置 - 多个Tomcat实例
标题下,Apache Tomcat发行版根目录中的CATALINA_HOME
文件中对此设置进行了很好的描述
答案 1 :(得分:67)
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
RUNNING.txt中记录了使用单独的CATALINA_HOME
和CATALINA_BASE
运行,其中说:
CATALINA_HOME
和CATALINA_BASE
环境变量用于 指定Apache Tomcat的位置及其活动的位置 配置,分别。您无法配置
CATALINA_HOME
和CATALINA_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二进制分发在多个用户之间共享 服务器。为此,您可以设置
CATALINA_BASE
环境变量到包含您的文件的目录 '个人' Tomcat实例。使用单独的
CATALINA_HOME
和CATALINA_BASE
运行时, 文件和目录按如下方式拆分:在
CATALINA_BASE
:
bin
- 仅限:setenv.sh(* nix)或setenv.bat(Windows),tomcat-juli.jarconf
- 服务器配置文件(包括server.xml)lib
- 图书馆和课程,如下所述logs
- 记录和输出文件webapps
- 自动加载的网络应用程序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
工具检查Tomcat文件的安装位置(Debian / Ubuntu):
dpkg -L tomcat7-common
答案 2 :(得分: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.
我很确定您在启动服务器时会发现您的设置是否有效。
答案 3 :(得分:6)
将CATALINA_BASE
指向与CATALINA_HOME
不同的目录,可以将配置目录与二进制目录分开。
默认情况下,CATALINA_BASE
(配置)和CATALINA_HOME
(二进制文件)指向同一文件夹,但将配置与二进制文件分开可以帮助您并排运行多个Tomcat实例,而无需重复二进制文件。
当您想要更新二进制文件而不修改或需要为Tomcat备份/恢复配置文件时,它也很有用。
现在可以使用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具有对其的读取权限。根据需要编辑配置文件。logs
指向conf/logging.properties
,请创建${catalina.base}/logs
目录,并确保Tomcat具有对其的读/写权限。temp
的默认值$CATALINA_TMPDIR
,请创建${CATALINA_BASE}/temp
目录,并确保Tomcat具有对其的写入权限。work
的{{1}}目录,并确保Tomcat具有写入权限。答案 4 :(得分:1)
CATALINA_BASE是可选的。
但是,在以下方案中,有助于设置与CATALINA_HOME分开的CATALINA_BASE。
当超过1个tomcat实例在同一主机上运行时
分离关注(单一责任)
答案 5 :(得分:-4)
这是bin的父文件夹,其中包含tomcat.exe文件:
CATALINA_HOME='C:\Program Files\Apache Software Foundation\Tomcat 6.0'
CATALINA_BASE
与CATALINA_HOME
相同。