tomcat - Variablen CATALINA_BASE und CATALINA_HOME

97

Ich habe mehrere Instanzen von Tomcat 6 auf demselben Server (Linux) und es funktioniert wie erwartet. Ich versuche herauszufinden, was die Standardpraxis in Bezug auf das Setzen der Variablen CATALINA_HOMEund CATALINA_BASEist.

In meinem Kater Installation, ich habe ein Setup CATALINA_HOMEzu Punkt zu einem „gemeinsamen“ Ordner (sagen wir /tomcat6) und die CATALINA_BASEVariable variiert in Abhängigkeit von den Instanznamen abhängig (sagen wir /tomcat_instance1, /tomcat_instance2)

Meine Frage lautet:

  • Benötige ich wirklich zwei Variablen?
  • Oder kann ich einfach eine haben CATALINA_HOMEund abschaffen CATALINA_BASE(oder umgekehrt)?
Souser
quelle
3
Die Frage selbst ist wirklich eine Antwort.
Koray Tugay
4
Der Grund, warum Sie dies tun müssen, besteht darin, die Wartung der Tomcat-Software (die darin lebt $CATALINA_HOME) von der Wartung der Tomcat-Instanzkonfiguration und der Inhalte (die darin leben $CATALINA_BASE) zu trennen .
Reinierpost

Antworten:

105

Wenn Sie mehrere Instanzen von Tomcat auf einem einzelnen Host ausführen, sollten Sie festlegen CATALINA_BASE, dass sie dem Verzeichnis .../tomcat_instance1oder .../tomcat_instance2für jede Instanz und der CATALINA_HOMEUmgebungsvariablen der allgemeinen Tomcat-Installation entsprechen, deren Dateien von den beiden Instanzen gemeinsam genutzt werden.

Die CATALINA_BASEUmgebung ist optional, wenn Sie eine einzelne Tomcat-Instanz auf dem Host ausführen, und wird CATALINA_HOMEin diesem Fall standardmäßig verwendet . Wenn Sie mehrere Instanzen ausführen, sollten Sie diese bereitstellen.

Eine ziemlich gute Beschreibung dieses Setups finden Sie in der RUNNING.txtDatei im Stammverzeichnis der Apache Tomcat-Distribution unter der Überschrift Erweiterte Konfiguration - Mehrere Tomcat-Instanzen

Russ
quelle
1
Ihr zweiter Absatz ist falsch, wenn Sie den gepackten Tomcat unter Ubuntu verwenden. Die Tomcat-Software (in $ CATALINA_HOME) wird ordnungsgemäß von der Tomcat-Instanz (in $ CATALINA_BASE) getrennt.
Reinierpost
84

CATALINA_HOME vs. CATALINA_BASE

Wenn Sie mehrere Instanzen ausführen, benötigen Sie ansonsten beide Variablen CATALINA_HOME.

Mit anderen Worten: CATALINA_HOMEist erforderlich und CATALINA_BASEoptional.

CATALINA_HOME stellt das Stammverzeichnis Ihrer Tomcat-Installation dar.

Optional kann Tomcat für mehrere Instanzen konfiguriert werden, indem $CATALINA_BASEfür jede Instanz definiert wird. Wenn nicht mehrere Instanzen konfiguriert sind, $CATALINA_BASEist dies dasselbe wie $CATALINA_HOME.

Siehe: Apache Tomcat 7 - Einführung

Läuft mit separat CATALINA_HOMEund CATALINA_BASEist in RUNNING.txt dokumentiert, die sagen:

Die Variablen CATALINA_HOMEund und CATALINA_BASEUmgebungsvariablen werden verwendet, um den Speicherort von Apache Tomcat bzw. den Speicherort seiner aktiven Konfiguration anzugeben.

Sie können nicht konfigurieren CATALINA_HOMEund CATALINA_BASEVariablen im setenvSkript, weil sie verwendet werden , die Datei zu finden.

Beispielsweise:

(4.1) Tomcat kann durch Ausführen eines der folgenden Befehle gestartet werden:

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

  $CATALINA_HOME/bin/startup.sh           (Unix)

oder

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

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

Mehrere Tomcat-Instanzen

In vielen Fällen ist es wünschenswert, dass eine einzelne Kopie einer Tomcat-Binärdistribution von mehreren Benutzern auf demselben Server gemeinsam genutzt wird. Um dies zu ermöglichen, können Sie die CATALINA_BASE Umgebungsvariable auf das Verzeichnis festlegen , das die Dateien für Ihre 'persönliche' Tomcat-Instanz enthält.

Bei Ausführung mit einem separaten CATALINA_HOMEund CATALINA_BASEwerden die Dateien und Verzeichnisse wie folgt aufgeteilt:

In CATALINA_BASE:

  • bin - Nur: setenv.sh (* nix) oder setenv.bat (Windows), tomcat-juli.jar
  • conf - Serverkonfigurationsdateien (einschließlich server.xml)
  • lib - Bibliotheken und Klassen, wie unten erläutert
  • logs - Protokoll- und Ausgabedateien
  • webapps - Automatisch geladene Webanwendungen
  • work - Temporäre Arbeitsverzeichnisse für Webanwendungen
  • temp - Verzeichnis, das von der JVM für temporäre Dateien verwendet wird>

In CATALINA_HOME:

  • bin - Skripte zum Starten und Herunterfahren
  • lib - Bibliotheken und Klassen, wie unten erläutert
  • endorsed- Bibliotheken, die den Standard "Endorsed Standards" überschreiben. Standardmäßig fehlt es.

Wie zu überprüfen

Der einfachste Weg , um zu überprüfen , was Ihre CATALINA_BASEund CATALINA_HOMEist durch Laufen startup.sh, zum Beispiel:

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

Sie können auch mit dem folgenden dpkgTool (Debian / Ubuntu) überprüfen, wo die Tomcat-Dateien installiert sind :

dpkg -L tomcat7-common
Kenorb
quelle
8
Dies ist eine viel bessere Antwort auf die akzeptierten. Sehr gut erklärt.
dkanejs
Erklären Sie bitte, wie Sie mehrere Tomcat-Instanzen mit unterschiedlichen CATALINA_BASE starten können.
Mark
CATALINA_BASE und CATALINA_HOME müssen als Systemvariablen gesetzt werden: Windows: set CATALINA_BASE = path
Mark
11

Ich kann nicht sagen, dass ich die besten Praktiken kenne, aber hier ist meine Perspektive.

Sind Sie mit diesen Variablen für irgendetwas?

Persönlich musste ich weder unter Linux noch unter Windows Änderungen in Umgebungen vornehmen, die von der Entwicklung bis zur Produktion variieren. Wenn Sie nicht etwas Besonderes tun, das sich auf sie stützt, können Sie sie wahrscheinlich in Ruhe lassen.

catalina.shLegt die Variablen fest, die Tomcat benötigt, um sofort zu arbeiten. Es heißt auch, dass dies CATALINA_BASEoptional ist:

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

Ich bin mir ziemlich sicher, dass Sie herausfinden werden, ob Ihr Setup funktioniert, wenn Sie Ihren Server starten.

Lauri Lehtinen
quelle
Können Sie den catalina_homePfad in der \bin\catalina.shDatei für beide Instanzen von Tomcat festlegen ?
Giri
8

Wenn Sie CATALINA_BASEauf ein anderes Verzeichnis als verweisen , CATALINA_HOMEkönnen Sie das Konfigurationsverzeichnis vom Binärverzeichnis trennen.

Standardmäßig verweisen CATALINA_BASE(Konfigurationen) und CATALINA_HOME(Binärdateien) auf denselben Ordner. Wenn Sie jedoch die Konfigurationen von den Binärdateien trennen, können Sie mehrere Instanzen von Tomcat nebeneinander ausführen, ohne die Binärdateien zu duplizieren.

Dies ist auch nützlich, wenn Sie die Binärdateien aktualisieren möchten, ohne sie zu ändern oder Ihre Konfigurationsdateien für Tomcat sichern / wiederherstellen zu müssen.

Update 2018

Es gibt eine einfachere Möglichkeit, CATALINA_BASE jetzt mit dem makebaseDienstprogramm festzulegen . Ich habe ein Tutorial zu diesem Thema unter http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-tomcat.html zusammen mit einem Video-Tutorial unter https://youtu.be veröffentlicht / nuugoG5c-7M

Die ursprüngliche Antwort wurde unten fortgesetzt

Um diese Funktion zu nutzen, erstellen Sie einfach das Konfigurationsverzeichnis und zeigen Sie mit der CATALINA_BASEUmgebungsvariablen darauf. Sie müssen einige Dateien in diesem Verzeichnis ablegen:

  • Kopieren Sie das confVerzeichnis aus dem ursprünglichen Tomcat-Installationsverzeichnis, einschließlich seines Inhalts, und stellen Sie sicher, dass Tomcat über Leseberechtigungen verfügt. Bearbeiten Sie die Konfigurationsdateien entsprechend Ihren Anforderungen.
  • Erstellen Sie ein logsVerzeichnis, wenn es darauf conf/logging.propertiesverweist ${catalina.base}/logs, und stellen Sie sicher, dass Tomcat über Lese- / Schreibberechtigungen verfügt.
  • Erstellen Sie ein tempVerzeichnis, wenn Sie nicht die Standardeinstellung überschreiben, auf $CATALINA_TMPDIRdie verweist ${CATALINA_BASE}/temp, und stellen Sie sicher, dass Tomcat über Schreibberechtigungen verfügt.
  • Erstellen Sie workstandardmäßig ein Verzeichnis ${CATALINA_BASE}/workund stellen Sie sicher, dass Tomcat über Schreibberechtigungen verfügt.
Isapir
quelle
1

CATALINA_BASE ist optional.

In den folgenden Szenarien ist es jedoch hilfreich, CATALINA_BASE einzurichten, das von CATALINA_HOME getrennt ist.

  1. Wenn mehr als eine Instanz von Tomcat auf demselben Host ausgeführt wird

    • Dies hilft dabei, nur eine Laufzeit der Tomcat-Installation zu haben, wobei mehrere CATALINA_BASE-Serverkonfigurationen auf separaten Ports ausgeführt werden.
    • Wenn Patches oder Versions-Upgrades erforderlich sind, sind nur 1 Installationsänderungen erforderlich oder müssen getestet / verifiziert / abgemeldet werden.
  2. Trennung von Bedenken (Einzelverantwortung)

    • Die Tomcat-Laufzeit ist Standard und ändert sich nicht bei jedem Release-Prozess. dh Tomcat-Binärdateien
    • Der Release-Prozess kann weitere Elemente wie Webanwendung (Ordner "Webanwendungen"), Umgebungskonfiguration (Verzeichnis "conf"), Verzeichnis "logs / temp / work" hinzufügen
Amit Kaneria
quelle
-5

Dies ist der übergeordnete Ordner von bin, der die Datei tomcat.exe enthält:

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

CATALINA_BASEist das gleiche wie CATALINA_HOME.

Guru
quelle
2
Ihre Antwort ist irreführend ... die richtige Antwort sollte lauten: Wenn nicht mehrere Instanzen konfiguriert sind , entspricht $ CATALINA_BASE $ CATALINA_HOME.` gemäß der Dokumentation
Eddie B
1
CATALINA_BASE ist nur dann gleich CATALINA_HOME, wenn Sie die Root-Instanz ausführen. Wenn Sie mehrere Instanzen haben, ist dies unterschiedlich.
Splatch
1
Ich würde sagen, dass CATALINA_BASE und CATALINA HOME unterschiedlich sein sollten, selbst wenn Sie nur eine Instanz haben. Auf diese Weise ist Ihr Inhalt von Ihrer Installation getrennt. Zum Beispiel CATALINA_HOME in / usr / share / tomcat und CATALINA_BASE in / var / lib /
tomcat
Nein. Es kann für mehrere Instanzen dasselbe sein, aber möglicherweise nicht dasselbe.
Andrey Regentov