Apache HTTPD & Apache Tomcat 6 per AJP Connector verbinden (Ubuntu 10.04.1)

In manchen Fällen ist sinnvoll, den Apache HTTP Server in Verbindung mit dem Apache Tomcat-Dienst einzusetzen. Die meisten Anwendungsgebiete finden sich, wenn die beiden Dienste auf unterschiedlichen physischen Servern betrieben werden sollen.

Sind beide Dienste am selben Server, so soll bevorzugt das AJP (Apache JServ Protocol) bzw. der AJP-Connector verwendet werden um die Kommunikation herzustellen.

When using a single server, the performance when using a native webserver in front of the Tomcat instance is most of the time significantly worse than a standalone Tomcat with its default HTTP connector, even if a large part of the web application is made of static files. If integration with the native webserver is needed for any reason, an AJP connector will provide faster performance than proxied HTTP. AJP clustering is the most efficient from the Tomcat perspective. It is otherwise functionally equivalent to HTTP clustering. [Von http://tomcat.apache.org/tomcat-6.0-doc/connectors.html]

Folgende Anleitung beschreibt die Einrichtung des Connectors auf einem Ubuntu 10.04.1 Server.

Voraussetzungen

  • Apache 2.2 (sudo apt-get install apache2.2-bin)
  • Apache Tomcat 6 (sudo apt-get install tomcat6)

Apache 2 Connector installieren

sudo apt-get install libapache2-mod-jk

Apache HTTP konfigurieren

In Datei /etc/apache2/sites-enabled/000-default innerhalb der entsprechenden _ Direktive _einen “Einhängepunkt” für die Tomcat-Applikation festlegen:

JkMount /NAME_DER_TOMCAT_APPLIKATION/* ajp13_worker

(Details hierzu unter Working with mod_jk)

Jk in der Datei /etc/apache2/mods-enabled/jk.load konfigurieren:

LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so
JkWorkersFile   /etc/libapache2-mod-jk/workers.properties
JkLogFile       /var/log/apache2/mod_jk.log
JkLogLevel      error

(workers.properties enthält unter anderem die Konfiguration für den oben eingesetzten “ajp13_worker”. Die Datei wird automatisch bei der Installation des Pakets libapache2-mod-jk angelegt)

Apache Tomcat konfigurieren


In der Datei /etc/tomcat6/server.xml ist die nötige Zeile bereits – auskommentiert – vorhanden. Um den Zugriff von Apache HTTP zu ermöglichen, muss die folgende Zeile aktiviert werden, indem man die Kommentarzeichen entfernt:

 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

[OPTIONAL] Direkten Zugriff zu Apache Tomcat deaktivieren

Möchte man ausschließlich Zugriffe via Apache HTTP erlauben, kann man den Connector-Block für das HTTP-Protokoll in Tomcat auskommentieren:

<!-- commented out to disable direct access to Tomcat
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
-->

Apache HTTP und Apache Tomcat neu laden / starten

sudo service apache2 reload
sudo service tomcat6 restart

Siehe auch