Die Migration eines alten JSP-Projektes auf einen neuen Server hat mich kürzlich dazu gebracht, etwas Zeit in Apache Tomcat zu stecken und die Konfiguration zu dokumentieren. Ausgangspunkt war eine JSP Applikation (WebApp), die über einen bestehenden Apache HTTPd Webserver ausgeliefert werden sollte.

Die folgende Beschreibung bezieht sich auf einen Windows Server, sollte sich unter Linux aber ebenso implementieren lassen.

Vorbereitung

  • Applikationsverzeichnis D:\Websites\www.domain.at\webapps anlegen.
  • Logverzeichnis D:\Websites\www.domain.at\logs anlegen.
  • Tomcat Konfigurationsverzeichnis %CATALINA_HOME%\conf\Catalina\www.domain.at anlegen.
  • Die IP-Adresse des gewünschten Hostnamen „www.domain.at“ MUSS auf die IP des Tomcat-Servers auflösen!

Tomcat Virtual Host anlegen

Der gewünschte VirtualHost muss in der Server.xml im CATALINA_HOME-Verzeichnis eingetragen werden:

<Host name="www.domain.at" appBase="D:/Websites/www.domain.at/webapps" unpackWARs="false" autoDeploy="true">
 <Valve className="org.apache.catalina.valves.AccessLogValve"
   directory="D:/Websites/www.domain.at/logs" prefix="tomcat_log."
   suffix=".txt" pattern="%h %l %u %t %r %s %b" />
</Host>

Danach den Tomcat-Dienst neu starten.

WebApp einrichten

  • Fertige Applikation im Verzeichnis ROOT unterhalb des Applikationsverzeichnisses ablegen.
  • Applikation muss im Unterverzeichnis „WEB-INF“ eine gültige „web.xml“ Konfigurationsdatei enthalten.

Beispiel Webapplikation:

webapps
+---test
   +---calendar
   ¦   +---img
   +---images
   +---WEB-INF
       +---classes
           +---com
           ¦   +---[...]
           +---dbtools
           +---test

Integration in Apache HTTPd

In der worker.properties einen neuen Worker für den Virtual Host anlegen:

worker.list=workerDOMAIN
worker.workerDOMAIN.type=ajp13
worker.workerDOMAIN.host=www.domain.at
worker.workerDOMAIN.port=8009

In der <VirtualHost> Direktive (vom Apache HTTPd!) das (Unter)verzeichnis mit dem Tomcat-Worker verknüpfen:

JkMount /* workerDOMAIN

Achtung: „JkMount /test/* workerDOMAIN“ mappt den Aufruf www.domain.at/test/ in das Verzeichnis www.domain.at:8009/test/ am Tomcat!