tomcat - переменные CATALINA_BASE и CATALINA_HOME

98

У меня есть несколько экземпляров tomcat 6, работающих на одном сервере (Linux), и он работает, как ожидалось. Я пытаюсь выяснить , что стандартная практика в отношении устанавливая CATALINA_HOMEи CATALINA_BASEпеременные.

В моей установке tomcat у меня есть настройка, CATALINA_HOMEчтобы указать на «общую» папку (скажем /tomcat6), и CATALINA_BASEпеременная варьируется в зависимости от имени экземпляра (скажем /tomcat_instance1, /tomcat_instance2)

У меня такой вопрос:

  • Мне действительно нужны две переменные?
  • Или можно просто взять одну CATALINA_HOMEи покончить с ней CATALINA_BASE(или наоборот)?
сука
источник
3
Вопрос сам по себе является ответом.
Корай Тугай
4
Причина, по которой вам нужно сделать это, заключается в том, чтобы отделить обслуживание программного обеспечения Tomcat (которое находится в нем $CATALINA_HOME) от обслуживания конфигурации и содержимого экземпляра Tomcat (которое находится в нем $CATALINA_BASE).
Reinierpost

Ответы:

106

Если вы запускаете несколько экземпляров Tomcat на одном хосте, вы должны установить CATALINA_BASEравным каталогу .../tomcat_instance1или .../tomcat_instance2для каждого экземпляра, а CATALINA_HOMEпеременную среды - для общей установки Tomcat, файлы которой будут совместно использоваться двумя экземплярами.

CATALINA_BASEСреда не является обязательной , если вы используете один экземпляр Tomcat на хосте и по умолчанию CATALINA_HOMEв этом случае. Если вы используете несколько экземпляров, они должны быть предоставлены.

Хорошее описание этой настройки содержится в RUNNING.txtфайле в корне дистрибутива Apache Tomcat под заголовком Расширенная конфигурация - несколько экземпляров Tomcat.

Русь
источник
1
Ваш второй абзац неверен при использовании упакованного Tomcat в Ubuntu. Он правильно отделяет программное обеспечение Tomcat (в $ CATALINA_HOME) от экземпляра Tomcat (в $ CATALINA_BASE).
reinierpost 08
85

CATALINA_HOME против 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скрипте, так как они используются , чтобы найти этот файл.

Например:

(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
Kenorb
источник
8
Это гораздо лучший ответ принятому. Очень хорошо объяснено.
dkanejs
Объясните, пожалуйста, как запустить несколько экземпляров tomcat с разными CATALINA_BASE?
Марк
CATALINA_BASE и CATALINA_HOME должны быть установлены как системные переменные: Windows: установить CATALINA_BASE = path
Mark
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.

Я почти уверен, что вы узнаете, работает ли ваша установка, когда запустите свой сервер.

Лаури Лехтинен
источник
Можете ли вы установить catalina_homeпуть в \bin\catalina.shфайле для обоих экземпляров tomcat ??
Гири
8

Указание CATALINA_BASEна другой каталог из CATALINA_HOMEпозволяет отделить каталог конфигурации от каталога двоичных файлов.

По умолчанию CATALINA_BASE(конфигурации) и CATALINA_HOME(двоичные файлы) указывают на одну и ту же папку, но отделение конфигураций от двоичных файлов может помочь вам запустить несколько экземпляров Tomcat бок о бок без дублирования двоичных файлов.

Это также полезно, если вы хотите обновить двоичные файлы без изменения или необходимости резервного копирования / восстановления файлов конфигурации для Tomcat.

Обновление 2018

Теперь есть более простой способ установить CATALINA_BASE с помощью makebaseутилиты. Я разместил учебное пособие по этой теме на 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 имеет права на запись в него.
Isapir
источник
1

CATALINA_BASE не является обязательным.

Однако в следующих сценариях помогает настроить CATALINA_BASE отдельно от CATALINA_HOME.

  1. Когда на одном хосте запущено более 1 экземпляра tomcat

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

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

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

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

CATALINA_BASEтакое же, как CATALINA_HOME.

Гуру
источник
2
Ваш ответ вводит в заблуждение ... в правильном ответе должно быть указано, что если несколько экземпляров не настроены , $ CATALINA_BASE совпадает с $ CATALINA_HOME.` согласно документации
Эдди Б.
1
CATALINA_BASE равна CATALINA_HOME только при запуске корневого экземпляра. Когда у вас несколько экземпляров, все будет по-другому.
сплатч
1
Я бы сказал, что CATALINA_BASE и CATALINA HOME должны быть разными, даже если у вас есть только один экземпляр. Таким образом, ваш контент отделен от вашей установки. Например, CATALINA_HOME в / usr / share / tomcat и CATALINA_BASE в / var / lib / tomcat
user1725779 03
нет. Это может быть то же самое, но может быть не то же самое для нескольких экземпляров.
Андрей Регентов