Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:apache_http_server_centos_6_-_mod_jk_-_apache_tomcat_kommunikation

Apache HTTP Server CentOS 6 - mod_jk - Apache Tomcat Kommunikation

Ein sehr häufige Kombination besteht aus dem Apache HTTP Webserver und dem Apache Tomcat.

Zwei der Möglichkeiten, wie so eine Verbindung zustande kommen kann, sollen im folgenden beschrieben werden. Die Möglichkeiten sind

  • mod_jk
  • mod_proxy_ajp

Ich persönlich bevorzuge die Möglichkeit über mod_jk. Die Gründe dafür sind historisch bedingt, da diese Art der Verbindung der beiden Server bereits vor der Möglichkeit der Nutzung von mod_proxy_ajp bestanden hat. Zum anderen sind meiner Ansicht folgende Vorteile gegeben:

  • Senden von spezifischen Anfragen an den Apache Tomcat z.B. (nur *.jsp-Seiten)
  • Logging Möglichkeiten (mod_jk.log)

Nachteile sind jedoch:

  • Aufwendigere Konfiguration
  • Keine Verzeichnis spezifische Weiterleitung

Im folgenden soll die Vorschaltung des Apache HTTP Webserver vor den Apache Tomcat gezeigt werden:

Herunterladen

Um das mod_jk nutzen zu können muss dieses nach der Installation erste einmal heruntergeladen werden. Dies kann unter folgendem Link erfolgen. Die aktuelle stabile Version ist 1.2.31

Installieren

Ab hier werden root-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root zu werden geben Sie bitte folgenden Befehl ein:

$ su -
Password: 

Nach dem erfolgreichen herunterladen der Datei mit z.B. dem Namen mod_jk-1.2.31-httpd-2.2.x.so, sollte diese noch umbenannt werden und in das Verzeichnis /etc/httpd/modules mit folgendem Befehl verschoben werden:

# mv /tmp/mod_jk-1.2.31-httpd-2.2.x.so  /etc/httpd/modules/mod_jk.so

Anschließend müssen noch ggf. die Besitzrechte mit nachfolgendem Befehl, wie folgt angepasst werden:

# chown root.root /etc/httpd/modules/mod_jk.so

Abschließend müssen ebenfalls noch ggf. die Dateirechte mit nachfolgendem Befehl, wie folgt angepasst werden:

# chmod 755 /etc/httpd/modules/mod_jk.so

Folgende Modifikationen sind an der Konfigurationsdatei /etc/httpd/conf.d/mod_jk.conf durchzuführen:

Schritt 1

Laden des Modules:

LoadModule jk_module modules/mod_jk.so

Schritt 2

Konfiguration des Modules:

<IfModule mod_jk.c>
    # Apache httpd and Apache Tomcat Connector Configuration.
    # JkRequestLogFormat: %r %q - not used, because form-field e.g. password
    #                             are shown.
    # JkShmSize size can now be determined automatically
    # JkShmSize 64k
    JkShmFile "/var/cache/tomcat6/temp/mod_jk.shm"
 
    JkLogFile "/var/log/httpd/mod_jk.log"
    JkLogLevel error
    JkLogStampFormat "[%a, %d.%m.%Y %H:%M:%S] "
    JkRequestLogFormat "%w %R %V %v %s %b %B %U %p %T %H %m"
 
    JkWorkerProperty workers.tomcat_home="/usr/share/tomcat6"
    JkWorkerProperty workers.java_home="/usr/lib/jvm/java"
 
    JkWorkerProperty worker.list=worker1
 
    JkWorkerProperty worker.worker1.type=ajp13
    JkWorkerProperty worker.worker1.host=127.0.0.1
    JkWorkerProperty worker.worker1.port=8099
</IfModule>

* Dies ist nur eine Beispielkonfiguration. Die Bedeutung der einzelnen Befehle kann in der Dokumentation The Apache Tomcat Connector - Reference Guide detailliert nachgelesen werden

  • JkShmSize 64k

:!: nur erforderlich für balancer- und status.worker - Zusätzlicher Cache-Speicher auf der Festplatte (Shared Memeory)

  • JkShmFile „/var/cache/tomcat6/temp/mod_jk.shm“

:!: nur erforderlich für balancer- und status.worker - Datei für den zusätzlichen Cache-Speicher auf der Festplatte (Shared Memeory)

  • JkLogFile „/var/log/httpd/mod_jk.log“

Log-Datei des Modules mod_jk

  • JkLogLevel error

Loglevel der Log-Datei des Modules mod_jk - Standard ist info

  • JkLogStampFormat „[%a, %d.%m.%Y %H:%M:%S] „

Format des verwendeten Zeitstempels - siehe auch The Apache Tomcat Connector - Reference Guide

  • JkRequestLogFormat “%w %R %V %v %s %b %B %U %p %T %H %m“

Format des Log-Eintrags - siehe auch The Apache Tomcat Connector - Reference Guide

  • JkWorkerProperty workers.tomcat_home=„/usr/share/tomcat6“

Heimatverzeichnis des Apache Tomcat

  • JkWorkerProperty workers.java_home=„/usr/lib/jvm/java“

Heimatverzeichnis der installierten Java-Version.

  • JkWorkerProperty worker.worker1.type=ajp13

Protokoll-Typ des AJP-Protokolls (1.2 oder 1.3 - :!: wobei 1.3 zu verwenden ist!)

  • JkWorkerProperty worker.worker1.host=127.0.0.1

IP-Adresse des Apache Tomcat-Servers

  • JkWorkerProperty worker.worker1.port=8099

AJP-Port des Apache Tomcat-Servers :!: agbeändert !!!

Schritt 3

Falls kein virtueller Host definiert ist, können folgende Konfigurationsangaben ebenfalls in der Datei /etc/httpd/conf/httpd.conf definiert werden. Falls ein virtuellen Host definiert wurde, könnte dieser wie folgt aussehen:

#
# tachtler.net
#
<VirtualHost *:80>
        ServerAdmin webmaster@tachtler.net
        ServerName tachtler.net
        ServerAlias www.tachtler.net
        ServerPath /
        DocumentRoot "/usr/share/tomcat6/webapps/ROOT"
        <Directory "/usr/share/tomcat6/webapps/ROOT">
                Options FollowSymLinks
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>
 
        JkMount /*.do worker1
        JkMount /*.jsp worker1
 
        DirectoryIndex index.htm
        ErrorLog logs/error.log
        CustomLog logs/access.log combined
</VirtualHost>

:!: WICHTIG sind hier die beiden Zeilen:

        JkMount /*.jsp worker1
        JkMount /*.do worker1

Die erste Zeile, weist den Apache HTTP Webserver alle angeforderten Seiten mit der Endung .jsp an den Apache Tomcat zur Erstellung weiterzuleiten.

Die zweite Zeile, weist den Apache HTTP Webserver alle angeforderten Seiten mit der Endung .do an den Apache Tomcat zur Erstellung weiterzuleiten. Die ist z.B. bei Nutzung des Apache Struts Frameworks der Fall.

:!: Ein Neustart ist nun erforderlich!

Ein Neustart kann mit folgendem Befehl durchgeführt werden:

# service tomcat6 restart
Stopping tomcat6:                                          [  OK  ]
Starting tomcat6:                                          [  OK  ]

Beispiel

Falls Sie nun folgende einfache *.jsp-Datei in den hier angegebenen DocumentRoot „/usr/share/tomcat6/webapps/ROOT“ legen,

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>JSP-Testseite</title>
</head>
<body>
<font style="font-family: arial; font-size: 0.8em"><%=new java.util.Date()%></font>
</body>
</html>

und diese wie folgt wie hier z.B. wie folgt aufrufen:

sollte das aktuelle Datum und die aktuelle Uhrzeit wie folgt dargestellt erscheinen

Mon Oct 27 16:56:34 CET 2011
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/apache_http_server_centos_6_-_mod_jk_-_apache_tomcat_kommunikation.txt · Zuletzt geändert: 2015/05/12 13:56 von klaus