Параметры tomcat - CATALINA_BASE и CATALINA_HOME
У меня есть несколько экземпляров tomcat 6, работающих на одном сервере (Linux), и он работает так, как ожидалось. Я пытаюсь выяснить, что такое стандартная практика в отношении установки переменных CATALINA_HOME
и CATALINA_BASE
.
В моей установке tomcat у меня есть setup CATALINA_HOME
, чтобы указать на "общую" папку (скажем /tomcat6
), а переменная CATALINA_BASE
изменяется в зависимости от имени экземпляра (скажем /tomcat_instance1
, /tomcat_instance2
)
Мой вопрос:
- Нужны ли мне две переменные?
- Или я могу просто оставить
CATALINA_HOME
и покончить с
CATALINA_BASE
(или наоборот)?
Ответы
Ответ 1
Если вы используете несколько экземпляров Tomcat на одном хосте, вы должны установить CATALINA_BASE
равным каталогу .../tomcat_instance1
или .../tomcat_instance2
, подходящему для каждого экземпляра, и переменную среды CATALINA_HOME
для общего Tomcat которые будут совместно использоваться между двумя экземплярами.
Среда CATALINA_BASE
является необязательной, если вы используете единственный экземпляр Tomcat на хосте и по умолчанию будет CATALINA_HOME
в этом случае. Если вы запускаете несколько экземпляров, как вы, он должен быть предоставлен.
Существует довольно хорошее описание этой установки в файле RUNNING.txt
в корневом каталоге дистрибутива Apache Tomcat под заголовком Расширенная настройка - несколько экземпляров Tomcat
Ответ 2
CATALINA_HOME
vs CATALINA_BASE
Если вы используете несколько экземпляров, вам нужны обе переменные, иначе только CATALINA_HOME
.
Другими словами: CATALINA_HOME
требуется, а CATALINA_BASE
является необязательным.
CATALINA_HOME
представляет корень вашей установки Tomcat.
Необязательно, Tomcat может быть настроен для нескольких экземпляров, определяя $CATALINA_BASE
для каждого экземпляра. Если несколько экземпляров не настроены, $CATALINA_BASE
совпадает с $CATALINA_HOME
.
Смотрите: Apache Tomcat 7 - Введение
Работа с отдельными CATALINA_HOME
и CATALINA_BASE
документируется в файле RUNNING.txt, в котором говорится:
Переменные среды CATALINA_HOME
и CATALINA_BASE
используются для укажите местоположение Apache Tomcat и местоположение его активного конфигурации, соответственно.
Вы не можете настроить переменные CATALINA_HOME
и CATALINA_BASE
в setenv
script, потому что они используются для поиска этого файла.
Например:
(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
- Автоматически загруженные веб-приложения -
work
- Временные рабочие каталоги для веб-приложений -
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
Вы также можете проверить, где установлены файлы Tomcat, с помощью dpkg
инструмента, как показано ниже (Debian/Ubuntu):
dpkg -L tomcat7-common
Ответ 3
Я не могу сказать, что я знаю лучшую практику, но здесь моя перспектива.
Используются ли вы с помощью этих переменных?
Лично мне не нужно было менять ни на 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.
Я уверен, что вы узнаете, работает ли ваша настройка при запуске вашего сервера.
Ответ 4
Это не имеет ничего общего с несколькими экземплярами. Две переменные среды позволяют отделить двоичные файлы Tomcat от файлов конфигурации Tomcat.
По умолчанию CATALINA_BASE
(конфигурации) и CATALINA_HOME
(двоичные файлы) указывают на одну и ту же папку.
Но указание CATALINA_BASE
в другой каталог позволяет отделить каталог конфигурации от каталога двоичных файлов, на которые указывает CATALINA_HOME
.
Это очень полезно, если вы хотите обновить двоичные файлы, не изменяя или не требуя резервного копирования/восстановления файлов конфигурации для Tomcat, или в тех случаях, когда вы хотите запускать несколько экземпляров Tomcat бок о бок с различными конфигурациями.
Чтобы воспользоваться этой возможностью, просто создайте каталог 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 есть права на запись.
Ответ 5
CATALINA_BASE не является обязательным.
Однако в следующих сценариях это помогает настроить CATALINA_BASE, которая отделена от CATALINA_HOME.
Ответ 6
Это родительская папка bin, которая содержит файл tomcat.exe:
CATALINA_HOME='C:\Program Files\Apache Software Foundation\Tomcat 6.0'
CATALINA_BASE
совпадает с CATALINA_HOME
.