tomcat - змінні CATALINA_BASE та CATALINA_HOME


97

У мене є кілька екземплярів 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 під заголовком Advanced Configuration - Multiple Tomcat Instance


1
Другий абзац неправильний під час використання пакуваного Tomcat на Ubuntu. Він належним чином відокремлює програмне забезпечення Tomcat (у $ CATALINA_HOME) від екземпляра Tomcat (у $ CATALINA_BASE).
reinierpost

84

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

8
Це набагато краща відповідь прийнятим. Дуже добре пояснили.
dkanejs

Поясніть, будь ласка, як запустити кілька екземплярів tomcat із різними CATALINA_BASE?
Марк

CATALINA_BASE та CATALINA_HOME повинні бути встановлені як системні змінні: Windows: встановити CATALINA_BASE = шлях
Позначити

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 ??
Giri

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 має до нього права на запис.

1

CATALINA_BASE не є обов’язковим.

Однак у наступних сценаріях це допомагає встановити CATALINA_BASE, який є окремим від CATALINA_HOME.

  1. Коли на одному хості працює більше 1 екземпляра tomcat

    • Це допомагає мати лише 1 час виконання інсталяції tomcat, причому кілька конфігурацій сервера CATALINA_BASE працюють на окремих портах.
    • Якщо потрібне виправлення або оновлення версії, потрібні лише 1 зміна встановлення або їх потрібно протестувати / перевірити / підписати.
  2. Поділ турботи (Єдина відповідальність)

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

-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

немає. Це може бути однаковим, але може бути не однаковим для багаторазового використання.
Андрій Регентов
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.