
Dieses HOWTO beschreibt,
wie man mehrere Tomcat-Instanzen einrichtet und dient als Vorbereitung für die
SOAP-Bibelstunden.
Mehrere Tomcat-Instanzen sind nützlich, um sich die Original-Installation
nicht zu zerkonfigurieren, bzw. um eigene Tomcat-Instanzen für bestimmte
User Accounts oder Übungen zu reservieren. Stürzt eine Umgebung ab,
reißt sie erstens nicht die anderen mit, und sie lässt sich eventuell
aus der Originalkonfiguration wieder restaurieren.
Es ist eine häufig anzutreffende Anforderung in Umgebungen, wo sich mehrere
Entwickler/Tester/Kunden/Projekte einen Entwicklungsserver teilen müssen,
die sich aber nicht gegenseitig stören sollen.
Dieses HOWTO basiert auf Erfahrungen mit Tomcat 4.0.3 auf SuSE Linux 7.2 / 7.3
Tomcat soll bereits als
Stand-Alone-Server installiert sein.
Man braucht zumindest Leserechte im Verzeichnis
/usr/local/jakarta-tomcat-4.0.3 , das unser CATALINA_HOME
Verzeichnis wird.
Wer Platz sparen muss oder will, kann alle Dateien in den Verzeichnissen /logs
und /work löschen - werden nicht unbendingt benötigt.
In Tomcat 4.0 kann man auf einfache Weise die Software (Java-Klassen usw.)
ein EINZIGES Mal installieren und dann verschiedene, vollkommen getrennt konfigurierte
INSTANZEN des Servers laufen lassen (natürlich dürfen die sich nicht
gegenseitig bestimmte Ressourcen wie Ports, Temp-Verzeichnisse, JSP-Repositories
usw. wegfressen).
Dazu ist es notwendig, die von allen Instanzen geteilten Zweige in einem Directory
zu belassen, welches beim Tomcat- Start unter der Umgebungsvariablen CATALINA_HOME
referenziert wird. Die instanzspezifischen Files (in Conf, Temp, Logs) werden
in einem Verzeichnis abgelegt, das in der Umgebungsvariablen CATALINA_BASE
festgelegt ist. Ausserdem braucht man noch JAVA_HOME, aber das
ist überall gleich.
Mit diesen drei Variablen kann man dann Tomcat INSTANZSPEZIFISCH betreiben.
Am einfachsten ist es, CATALINA_HOME einem anderen User zu geben
und für den Rest Read-only zugänglich zu machen. CATALINA_BASE
kann man dann nach Belieben plätten.
Dazu muss man folgende Schritte ausführen:
CATALINA_HOME,in unserem Beispiel /usr/local/jakarta-tomcat-4.0.3,
legt man ein Unterverzeichnis für die Instanzen an: /instances.
/instances
das Verzeichnis /original an. /original legen wir die folgenden Unterverzeichnisse
an:/webapps: ein symbolischer Link zu den Originaldateien/conf: Hier werden nun Kopien der Dateien server.xml,
tomcat-users.xml und web.xml aus der Originalinstallation
abgelegt. server.xml: Diese
zentrale Konfigurationsdatei beschreibt den Tomcat-Server als Ganzes.tomcat-users.xml:
Das ist die Original-User-Definitions-Datei.web.xml: Diese Datei
beschreibt die Einstellungen für die automatisch geladenen Web
Applikationen./bin: Hier werden verschiedene Skripte für die Tomcat-Instanz
abgelegt. Die Start- und Stopskripte startup.sh und shutdown.sh
können aus der Originalkonfiguration kopiert und angepast werden, die
übrigen Skripte werden neu angelegt. init.sh:
Diese Skript erzeugt die Arbeitsverzeichnisse. Diese Skript muss ausgeführt
werden, bevor man dei jeweilige Tomcat_instanz zum ersten Mal startet.$TEMPORARY_BASE und in
diesem Verzeichnis wiederum die Unterverzeichnisse /logs
und /work. $CATALINA_BASE/webapps
nach $CATALINA_HOME/webapps, d.h. die Web Applikationen
werden im Originalverzeichnis gesucht.$CATALINA_BASE/logs
nach $TEMPORARY_BASE/logs, also werden die Log-Files im
temporären Verzeichnis dieses Hosts abgelegt.$CATALINA_BASE/work
nach $TEMPORARY_BASE/work, also werden die /work-Dateien
auch im temporären Verzeichnis dieses Hosts abgelegt.startup.sh:
Dieses Skript startet den Tomcat Webserver, Voraussetzung: Die Verzeichnisse,
die Tomcat zum Arbeiten braucht wurden vor der Ausführung erzeugt.shutdown.sh:
Dieses Skript beendet den Tomcat Webserver. Danach sollte man die temporär
erzeugten Dateien wieder löschen lassen. clean.sh:
Diese Skript löscht die temporär ereugten Dateien:/webapps, /logs,
and /work in $CATALINA_BASE, die wir mit init.sh
haben anlegen lassen.$TEMPORARY_BASE
, einschlißelich seiner Unterverzeichnisse, die wir mit init.sh
haben anlegen lassen. environment.sh:
Dieses Skript wird nur intern von den oben aufgeführten vier Skripten
aufgerufen. Es definiert alle Umgebungsvariablen, auf die diese Skripte
zugreifen.JAVA_HOME wird definiert. Sie zeigt
auf das JDK, das Tomcat benutzen soll.CATALINA_HOME zeigt auf das Wurzelverzeichnis
der Original-Tomcat-Installation, also bei uns/usr/local/jakarta-tomcat-4.0.3.
Dieses Wurzelverzeichnis benutzen alle unsere Tomcat-Instanzen; sie
brauchen hier aber nur Leserechte. CATALINA_BASE zeigt auf das Wurzelverzeichnis
/original dieser spezifischen Tomcat-Instanz.. In den neuen
Instanzen muss es entsprechend angepasst werden (/instance1,
/ instance2, etc.)TEMPORARY_BASE zeigt auf ein bestimmtes
Verzeichnis in dem temporär von init.sh erzeugten
Arbeitsverzeichnis. Für diese Original-Instanz lassen wir ein Verzeichnis
/tmp/tomcat-4.0-original erzeugen . Hier liegen dann -
bis zum Löschen durch clean.sh - die Verzeichnisse
/log und /work.
/original
sollte man jetzt sichern, indem man es z.B. gezippt an einen sicheren Ort
ablegt. Das Verzeichnis /original kann nun als neue Instanz kopiert
und für diese Instanz angepasst werden. ![]()
/instances | - | original | - | webapps | ||
| - | conf | - | server.xml | ||
| - | tomcat-users.xml | ||||
| - | web.xml | ||||
| - | bin | - | init.sh | ||
| - | startup.sh | ||||
| - | shutdown.sh | ||||
| - | clean.sh | ||||
| - | environment.sh | ||||
| - | instance 1 | ||||
| - | instance 2 | ||||
| - | ... |
![]()
In Tomcat 4.0 kann man auch verschiedene, vollkommen getrennt konfigurierte
INSTANZEN des Servers GLEICHZEITIG laufen lassen (natürlich dürfen
die sich nicht gegenseitig bestimmte Ressourcen wie Ports, Temp-Verzeichnisse,
JSP-Repositories usw. wegfressen).
Die Standard-Datei server.xml, die mit Tomcat installiert wird,
ist nicht für eine solche geteilte Server-Umgebung gemacht. Daher muss
man sich die Datei server.xml für jede Instanz anpassen.:
Und zwar müssen der <Server> und der < Connector>
jeweils eine einmalig vorkommende Portnummer bekommen, also beispielsweise 8010
und 8011 für Instanz 1, 8012 und 8013 für Instanz 2 usw.
Auszug aus der server.xml:
...
<Server port="8005 8010" shutdown="SHUTDOWN" debug="0">
...
<Service name="Tomcat-Standalone">
...
<Connector className="org.apache.catalina.connector.http.HttpConnector"
port="8080 8011" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="60000"/>
...
17-03-2002 Petra
Haberer