CATALINA_HOME vs. CATALINA_BASE

11

Ich kann keine endgültige Antwort darauf finden, warum Ubuntu die CATALINA_BASEUmgebungsvariable so eingestellt hat, dass sie sich von unterscheidet CATALINA_HOME. Ich habe dieses Dokument gefunden, das darauf hindeutet, dass CATALINA_BASEeine Nichteinstellung es gleichwertig machen würde CATALINA_HOME. In diesem Dokument wird auch vorgeschlagen, Einstellungen CATALINA_BASEvorzunehmen, um mehrere Instanzen verfügbar zu machen.

Ich scheine jedoch nichts zu finden, was dies erklärt. Vermutlich war es CATALINA_HOMElange Zeit gut , mit einer Single zu laufen , aber Ubuntu wechselte.

Ich fand diese Frage mit einer Beleuchtungs Antwort auf AskUbuntu aber es gibt nicht viel speziell auf CATALINA_HOMEvs. CATALINA_BASE. Diese Frage hat anspielen auf die „appBase“ Parameter, der ist dokumentiert in der Tomcat6 Dokumentation für die Host - Container in der Konfigurationsdatei.

Hier sind die Fragen: Warum werden diese beiden Variablen getrennt? Wann sollten sie getrennt werden? Was kann der Administrator damit tun? Was legen Sie dann in jedes Verzeichnis? Wann sollten diese beiden Variablen gleich sein? Was empfiehlt ASF für die Standardpraxis?

Mei
quelle
Ähnlich: askubuntu.com/q/43226/256002
Basil Bourque

Antworten:

12

Warum sind diese beiden Variablen getrennt?

katalina.home zeigt auf den Ort der allgemeinen Informationen.
Catalina.base zeigt auf das Verzeichnis, in dem alle instanzspezifischen Informationen gespeichert sind.

Sie haben also 1 Zuhause und können mehr als 1 Basis haben.

Wann sollten sie getrennt werden? Wann sollten diese beiden Variablen gleich sein?

Wenn Sie einen Kater haben, können Sie ihn auf den gleichen Wert einstellen. Eine gute Vorgehensweise empfiehlt jedoch, dass Sie im Voraus planen und ihn getrennt halten: Sie wissen nie, ob Sie mehr als einen Kater benötigen. Ubuntu folgte dieser Denkweise, da sie logischer war: Es erleichtert das Ausführen von 2+ Tomcats, deaktiviert jedoch nicht das Ausführen von 1 Tomcat, wenn beide auf den gleichen Wert gesetzt werden müssen und jeder den Basiswert bearbeiten muss. Sinnvoller, sie anders zu halten.

Was kann der Administrator damit tun?

Ermöglichen Sie die gleichzeitige Ausführung von mehr als einem Tomcat, wobei jede Tomcat-Instanz ihre eigenen Apps haben kann.

Was legen Sie dann in jedes Verzeichnis?

Zuhause enthält die Binairy.
Base enthält conf, logs, webapps, work und temp. 1 für jede Tomcat-Instanz.

Rinzwind
quelle
4

CATALINA_HOME vs. CATALINA_BASE

Wenn Sie mehrere Instanzen ausführen, benötigen Sie ansonsten nur 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
3

Es ist nicht nur die beste Möglichkeit, zwei Tomcat-Instanzen auszuführen, sondern erleichtert auch die Aktualisierung.

Ich benutze dieses Setup.

<!-- language: bash -->

/opt/apache-tomcat-7.0-32
/opt/apache-tomcat-7.0.39
/opt/apache-tomcat-7       (simbolic link to apache-tomcat-7.0.32)

CATALINA_HOME = / opt / apache-tomcat-7

/srv/user_deploys/tomcat_product_a
/srv/user_deploys/tomcat_product_b

CATALINA_BASE verweist auf das eine oder andere Bereitstellungsverzeichnis.

Grundlegende Programme und Bibliotheken sind auf /opt/einfach kopieren server.xml, web.xml(und einigen anderen Dateien, die Dokumentation lesen, bitte) und Verzeichnisse erstellen ist, Protokolle, Webapps, temp, Arbeit (RTLM, L wie lovelly, bitte)

Sie können Tomcat-Binärdateien aktualisieren, indem CATALINA_HOMESie die Datei $ CATALINA_BASE / bin / setenv.sh für jede Instanz ändern, oder Sie können einfach den symbolischen Link ändern und die Binärdateien "global" aktualisieren.

Es ist einfacher zu aktualisieren, selbst wenn Sie nur eine Instanz haben.

Dario der Langweilige
quelle