tomcat - переменные CATALINA_BASE и CATALINA_HOME - PullRequest
86 голосов
/ 22 июня 2010

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

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

Мой вопрос такой:

  • Мне действительно нужны две переменные?
  • Или я могу просто взять один CATALINA_HOME и покончить с CATALINA_BASE (или наоборот)?

Ответы [ 6 ]

93 голосов
/ 21 декабря 2011

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

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

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

70 голосов
/ 01 апреля 2015

CATALINA_HOME против CATALINA_BASE

Если вы запускаете несколько экземпляров, вам нужны обе переменные, в противном случае только CATALINA_HOME.

Другими словами: CATALINA_HOME isтребуется, а 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 для временныхfiles>

In 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
11 голосов
/ 22 июня 2010

Не могу сказать, что знаю лучшие практики, но вот моя точка зрения.

Вы используете эти переменные для чего-либо?

Лично я не знаю 'Не нужно менять ни в 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.

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

6 голосов
/ 23 мая 2016

Указание 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.Вам нужно будет поместить некоторые файлы в этот каталог:

  • Скопируйте каталог conf из исходного установочного каталога Tomcat, включая его содержимое, и убедитесь, что Tomcat имеет разрешения на чтение.Отредактируйте файлы конфигурации в соответствии с вашими потребностями.
  • Создайте каталог logs, если conf/logging.properties указывает на ${catalina.base}/logs, и убедитесь, что Tomcat имеет разрешения на чтение / запись.
  • Создатькаталог temp, если вы не переопределяете значение по умолчанию $CATALINA_TMPDIR, которое указывает на ${CATALINA_BASE}/temp, и убедитесь, что Tomcat имеет разрешения на запись в него.
  • Создайте каталог work, который по умолчанию равен ${CATALINA_BASE}/work и убедитесь, что у Tomcat есть разрешения на запись.
1 голос
/ 02 августа 2016

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

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

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

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

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

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

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

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

...