tomcat - zmienne CATALINA_BASE i CATALINA_HOME

100

Mam wiele wystąpień tomcat 6 działających na tym samym serwerze (Linux) i działa zgodnie z oczekiwaniami. Próbuję dowiedzieć się, jaka jest standardowa praktyka w zakresie ustawiania zmiennych CATALINA_HOMEi CATALINA_BASE.

W mojej instalacji tomcat, mam setup CATALINA_HOME, aby wskazywała „wspólnego” Folder (powiedzmy /tomcat6) i CATALINA_BASEzmienna zależy od nazwy instancji (powiedzmy /tomcat_instance1, /tomcat_instance2)

Moje pytanie brzmi:

  • Czy naprawdę potrzebuję dwóch zmiennych?
  • Czy mogę po prostu mieć jeden CATALINA_HOMEi pozbyć się go CATALINA_BASE(lub odwrotnie)?
souser
źródło
3
Samo pytanie jest naprawdę odpowiedzią.
Koray Tugay
4
Powodem, dla którego należy to zrobić, jest oddzielenie obsługi oprogramowania Tomcat (w którym żyje $CATALINA_HOME) od obsługi konfiguracji i zawartości instancji Tomcat (które są obecne $CATALINA_BASE).
reinierpost

Odpowiedzi:

108

W przypadku uruchamiania wielu instancji serwera Tomcat na jednym hoście należy ustawić wartość CATALINA_BASErówną katalogowi .../tomcat_instance1lub .../tomcat_instance2odpowiednio dla każdej instancji i CATALINA_HOMEzmiennej środowiskowej dla wspólnej instalacji Tomcat, której pliki będą współużytkowane między tymi dwoma instancjami.

CATALINA_BASEŚrodowisko jest obowiązkowe, jeśli uruchomienie pojedynczej instancji Tomcat na hoście i będzie domyślnie CATALINA_HOMEw tej sprawie. Jeśli korzystasz z wielu instancji, tak jak jesteś, należy je podać.

Całkiem dobry opis tej konfiguracji znajduje się w RUNNING.txtpliku w katalogu głównym dystrybucji Apache Tomcat pod nagłówkiem Advanced Configuration - Multiple Tomcat Instances

Russ
źródło
1
Twój drugi akapit jest nieprawidłowy, jeśli używasz spakowanego Tomcata na Ubuntu. Prawidłowo oddziela oprogramowanie Tomcat (w $ CATALINA_HOME) od instancji Tomcat (w $ CATALINA_BASE).
reinierpost
86

CATALINA_HOME vs CATALINA_BASE

Jeśli uruchamiasz wiele instancji, potrzebujesz obu zmiennych, w przeciwnym razie tylko CATALINA_HOME.

Innymi słowy: CATALINA_HOMEjest wymagane i CATALINA_BASEopcjonalne.

CATALINA_HOME reprezentuje katalog główny instalacji Tomcat.

Opcjonalnie Tomcat można skonfigurować dla wielu instancji, definiując je $CATALINA_BASEdla każdej instancji. Jeśli wiele instancji nie jest skonfigurowanych, $CATALINA_BASEjest taki sam jak $CATALINA_HOME.

Zobacz: Apache Tomcat 7 - Wprowadzenie

Działa z osobnym CATALINA_HOMEi CATALINA_BASEjest udokumentowane w RUNNING.txt, który mówi:

Te CATALINA_HOMEi CATALINA_BASEzmienne środowiskowe są wykorzystywane do określania położenia Apache Tomcat i lokalizację swojej aktywnej konfiguracji, odpowiednio.

Nie można konfigurować zmiennych CATALINA_HOMEi CATALINA_BASEzmiennych w setenvskrypcie, ponieważ służą one do znajdowania tego pliku.

Na przykład:

(4.1) Tomcat można uruchomić, wykonując jedno z następujących poleceń:

  %CATALINA_HOME%\bin\startup.bat         (Windows)

  $CATALINA_HOME/bin/startup.sh           (Unix)

lub

  %CATALINA_HOME%\bin\catalina.bat start  (Windows)

  $CATALINA_HOME/bin/catalina.sh start    (Unix)

Wiele instancji Tomcat

W wielu przypadkach pożądane jest, aby pojedyncza kopia dystrybucji binarnej Tomcat była współdzielona przez wielu użytkowników na tym samym serwerze. Aby było to możliwe, możesz ustawić CATALINA_BASE zmienną środowiskową na katalog zawierający pliki Twojej „osobistej” instancji Tomcat.

Podczas uruchamiania z osobnym CATALINA_HOMEi CATALINA_BASE, pliki i katalogi są dzielone w następujący sposób:

W CATALINA_BASE:

  • bin - Tylko: setenv.sh (* nix) lub setenv.bat (Windows), tomcat-juli.jar
  • conf - Pliki konfiguracyjne serwera (w tym server.xml)
  • lib - Biblioteki i klasy, jak wyjaśniono poniżej
  • logs - Pliki dziennika i pliki wyjściowe
  • webapps - Automatycznie ładowane aplikacje internetowe
  • work - Tymczasowe katalogi robocze dla aplikacji internetowych
  • temp - Katalog używany przez maszynę JVM do przechowywania plików tymczasowych>

W CATALINA_HOME:

  • bin - Skrypty uruchamiania i zamykania
  • lib - Biblioteki i klasy, jak wyjaśniono poniżej
  • endorsed- Biblioteki, które zastępują standardowe „Zatwierdzone standardy”. Domyślnie jest nieobecny.

Jak sprawdzić

Najłatwiej sprawdzić, co jest Twoje CATALINA_BASEi CATALINA_HOMEbiegnie startup.shnp .:

$ /usr/share/tomcat7/bin/startup.sh
Using CATALINA_BASE:   /usr/share/tomcat7
Using CATALINA_HOME:   /usr/share/tomcat7

Możesz również sprawdzić, gdzie są zainstalowane pliki Tomcat, za pomocą dpkgnarzędzia jak poniżej (Debian / Ubuntu):

dpkg -L tomcat7-common
kenorb
źródło
8
To znacznie lepsza odpowiedź niż przyjęta. Bardzo dobrze wyjaśnione.
syncdk
Proszę wyjaśnić, jak uruchomić wiele instancji Tomcat z różnymi CATALINA_BASE?
Mark
CATALINA_BASE i CATALINA_HOME muszą być ustawione jako zmienne systemowe: Windows: ustaw CATALINA_BASE = ścieżka
Mark
11

Nie mogę powiedzieć, że znam najlepsze praktyki, ale oto moja perspektywa.

Czy jesteś za pomocą tych zmiennych dla czegokolwiek?

Osobiście nie musiałem zmieniać ani na Linuksie, ani w Windowsie, w różnych środowiskach od programowania do produkcji. Jeśli nie robisz czegoś konkretnego, co na nich polega, prawdopodobnie możesz zostawić ich w spokoju.

catalina.shustawia zmienne, które Tomcat potrzebuje do pracy po wyjęciu z pudełka. Mówi również, że CATALINA_BASEjest opcjonalne:

#   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.

Jestem prawie pewien, że po uruchomieniu serwera dowiesz się, czy konfiguracja działa, czy nie.

Lauri Lehtinen
źródło
Czy możesz ustawić catalina_homeścieżkę w \bin\catalina.shpliku dla obu instancji tomcat?
Giri
8

Wskazanie CATALINA_BASEinnego katalogu z CATALINA_HOMEumożliwia oddzielenie katalogu konfiguracyjnego od katalogu plików binarnych.

Domyślnie CATALINA_BASE(konfiguracje) i CATALINA_HOME(pliki binarne) wskazują ten sam folder, ale oddzielenie konfiguracji od plików binarnych może pomóc w uruchamianiu wielu wystąpień Tomcat obok siebie bez duplikowania plików binarnych.

Jest to również przydatne, gdy chcesz zaktualizować pliki binarne bez modyfikowania lub konieczności tworzenia kopii zapasowych / przywracania plików konfiguracyjnych dla Tomcat.

Zaktualizuj 2018

Istnieje teraz łatwiejszy sposób ustawienia CATALINA_BASE za pomocą makebasenarzędzia. Opublikowałem samouczek na ten temat pod adresem http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-tomcat.html wraz z samouczkiem wideo pod adresem https://youtu.be / nuugoG5c-7M

Ciąg dalszy oryginalnej odpowiedzi

Aby skorzystać z tej funkcji, po prostu utwórz katalog config i wskaż go za pomocą CATALINA_BASEzmiennej środowiskowej. Będziesz musiał umieścić kilka plików w tym katalogu:

  • Skopiuj confkatalog z oryginalnego katalogu instalacyjnego Tomcat, w tym jego zawartość, i upewnij się, że Tomcat ma do niego uprawnienia do odczytu. Edytuj pliki konfiguracyjne zgodnie ze swoimi potrzebami.
  • Utwórz logskatalog, jeśli conf/logging.propertieswskazuje na ${catalina.base}/logs, i upewnij się, że Tomcat ma do niego uprawnienia do odczytu / zapisu.
  • Utwórz tempkatalog, jeśli nie nadpisujesz wartości domyślnej, $CATALINA_TMPDIRktóra wskazuje ${CATALINA_BASE}/temp, i upewnij się, że Tomcat ma do niego uprawnienia do zapisu.
  • Utwórz workkatalog domyślny ${CATALINA_BASE}/worki upewnij się, że Tomcat ma do niego uprawnienia do zapisu.
isapir
źródło
2

CATALINA_BASE jest opcjonalna.

Jednak w następujących scenariuszach pomaga skonfigurować CATALINA_BASE, która jest oddzielna od CATALINA_HOME.

  1. Gdy więcej niż 1 wystąpienie tomcat działa na tym samym hoście

    • Pomaga to mieć tylko 1 środowisko wykonawcze instalacji tomcat, z wieloma konfiguracjami serwera CATALINA_BASE działającymi na oddzielnych portach.
    • W przypadku konieczności wprowadzenia poprawek lub aktualizacji wersji wymagana jest tylko 1 zmiana instalacji lub musi zostać przetestowana / zweryfikowana / wylogowana.
  2. Rozdzielenie obaw (pojedyncza odpowiedzialność)

    • Środowisko wykonawcze Tomcat jest standardowe i nie zmienia się podczas każdego procesu wydania. tj. pliki binarne Tomcat
    • Proces wydania może dodać więcej rzeczy, takich jak aplikacja internetowa (folder webapps), konfiguracja środowiska (katalog conf), logs / temp / katalog roboczy
Amit Kaneria
źródło
-5

To jest folder nadrzędny bin, który zawiera plik tomcat.exe:

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

CATALINA_BASEjest taki sam jak CATALINA_HOME.

Guru
źródło
2
Twoja odpowiedź jest myląca ... prawidłowa odpowiedź powinna brzmieć Jeśli wiele instancji nie jest skonfigurowanych , $ CATALINA_BASE to to samo, co $ CATALINA_HOME.` zgodnie z dokumentacją
Eddie B
1
CATALINA_BASE jest równa CATALINA_HOME tylko wtedy, gdy uruchamiasz instancję główną. Gdy masz wiele instancji, będzie inaczej.
splatch
1
Powiedziałbym, że CATALINA_BASE i CATALINA HOME powinny być różne, nawet jeśli masz tylko jedną instancję. W ten sposób zawartość jest oddzielona od instalacji. Na przykład CATALINA_HOME w / usr / share / tomcat i CATALINA_BASE w / var / lib / tomcat
user1725779
Nie. Może być taki sam, ale może nie być taki sam dla wielu instancji.
Andrey Regentov