Параметры 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.

  • Когда более одного экземпляра tomcat работают на одном хосте

    • Это помогает иметь только 1 время выполнения установки tomcat, с несколькими конфигурациями сервера CATALINA_BASE, работающими на разных портах.
    • Если какое-либо исправление или обновление версии необходимо, требуется только одно изменение установки или необходимо проверить/проверить/отменить.
  • Разделение беспокойства (Единая ответственность)

    • Время выполнения Tomcat является стандартным и не изменяется во время каждого процесса выпуска. т.е. двоичные файлы Tomcat
    • Процесс выпуска может добавить больше вещей в качестве веб-приложения (папка webapps), конфигурации среды (каталог conf), каталога журналов /temp/work

Ответ 6

Это родительская папка bin, которая содержит файл tomcat.exe:

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

CATALINA_BASE совпадает с CATALINA_HOME.