Advanced
Java
Services
|
Connecting Apache 2.0.39 and Tomcat4.0.4 with mod_jk to run Servlets and JavaServerPages
|
|
Wie der Indianer den Kater zum Schnurren bringt
|
I Download der Dateien
1) Das Hilfstool Ant (die Ameise)
Die Version 1.4.1 steht unter
http://ant.apache.org/old-releases/v1.4.1/
Die Version 1.5.2 steht unter
http://ant.apache.org/old-releases/v1.5.2/
Die aktuelle Version 1.5.3 findet sich unter
http://ant.apache.org/bindownload.cgi
2) jakarta-tomcat-connectors
Das Schema der Speicherung der connectors ist analog zu dem der entsprechenden Tomcat-Versionen,
man muß nur das Verzeichnis bin durch das Verzeichnis src ersetzen.
Ältere connectors findet man unter
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/archives/
Dort sucht man sich die gewünschte Version, wechselt also in ein Verzeichnis v4.x.x
und dort wiederum ins Verzeichnis src
Die aktuellen Versionen findet man unter
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/
Die aktuelle Version ist zur Zeit 4.1.24, dann gehts wieder ins src-Verzeichnis
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.24/src
jakarta-tomcat-connectors-4.1.24-src.tar.gz 19-Mar-2003 1.7M GZIP compressed file
Hinweis
connector und Apache passen nicht immer zusammen. So benötigte etwa die Version
Apache 2.0.39 einen connector der Version 4.0.2-01. Diese Installation wird hier beschrieben.
II Installation (connecting Apache 2.0.39 and Tomcat 4.0.4)
1) Apache 2.0.39
Die Installation von Apache 2.0.39 ist eigentlich problemlos, nur sollte man den Verzeichnisvorschlag Program Files/Apache 2 bzw. Programme/Apache 2 nicht akzeptieren.
Die geplante Zusammenarbeit zwischen Apache2 und Tomcat wird nicht funktionieren, wenn der Verzeichnispfad Leerzeichen enthält. Außerdem sollte man einen Webserver nicht einfach unter Programme installieren. Er verdient ein eigenes Verzeichnis. Zur Installation unter NT oder 2000 braucht man Administratorrechte.
Sehr brauchbar als Pfad ist etwa
c:/Apache/Apache2
Nach der Installation:
Mit einem Browser testen : http://127.0.0.1 sollte die Startseite des Apache bringen
Den Apache Monitor ausprobieren und einmal beenden und wieder starten.
Umgebungsvariable setzen. In diesem Fall APACHE_HOME = c:/Apache/Apache2
Das Rootverzeichnis ist für HTML-Dokumente ist %APACHE_HOME%\htdocs
Die Konfigurierungsdatei httpd.conf (inzwischen nur noch eine) liegt in %APACHE_HOME%\conf
(Wir werden sie noch verändern müssen.)
Das Modulverzeichnis ist %APACHE_HOME%\modules
(In dieses Verzeichnis müssen wir später die Datei mod_jk.dll legen.)
2) Tomcat 4.0.4
Die Installation von Tomcat 4.0.4 ist zunächst problemlos. Als Verzeichnis wählt man nun
c:/Apache/Tomcat4 (siehe Bemerkung zur Apache Installation)
Nach der Installation:
Mit einem Browser testen : http://127.0.0.1:8080 sollte die Startseite von Tomcat bringen
Umgebungsvariable setzen : TOMCAT_HOME = c:/Apache/Tomcat4
Das Rootverzeichnis für HTML-Dokumente ist %TOMCAT_HOME%\webapps\ROOT\
Die Konfigurierungsdatei server.xml liegt in %TOMCAT_HOME%\conf
(Wir werden sie noch verändern müssen.)
Die Servlet *.class Dateien (und meist auch die zugehörigen Quellcodedateien) liegen in
%TOMCAT_HOME%\webapps\examples\web-inf\classes
3) Servlet API 2.3 und Java class-files
servlet-2_3-fcs-docs.zip :
Die Datei in ein (im Prinzip) beliebiges Verzeichnis entpacken. Danach ist die Doku über
meinVerzeichnis\index.html zu erreichen.
Schöner ist es natürlich, wenn man die JDK1.3.1-Dokumentation um das Servlet-API ergänzt,
dann kann man in einem Browserfenster die gesamte Doku durchblättern. Dazu braucht man nur
HTML-Grundkenntnisse.
servlet-2_3-fcs-classfiles.zip
Eine Kopie der Datei umbenennen in servlet-2_3-fcs-classfiles.jar und in das Verzeichnis
%JAVA_HOME%\jre\lib\ext
legen. Damit ist servlet-2_3-fcs-classfiles.jar ein Java-Archiv geworden. Wenn dieses im vorgenannten
Verzeichnis liegt, sind die enthaltenen Klassen über normale import Anweisungen ansprechbar.
4) Das Hilfstool Ant (die Ameise)
Die gepackte Datei entpackt sich in ein Unterverzeichnis jakarta-ant-1.4.1.
Vorschlag:
Dieses Verzeichnis umbenennen in Ant1.4.1 und als Unterverzeichnis von Apache anlegen
c:\Apache\Ant1.4.1
Umgebungsvariable setzen : ANT_HOME = c:\Apache\Ant1.4.1
5) jakarta-tomcat-connectors
Die Datei jakarta-tomcat-connectors-4.0.2-01-src.zip entpackt sich in ein Verzeichnis
jakarta-tomcat-connectors-4.0.2-01-src, das u.a. ein Unterverzeichnis jk enthält.
Dieses Verzeichnis enthält die Dateien build.properties.sample und build.properties
Die Datei build.properties löschen oder umbenennen in build.properties.old. Sie wird
nicht gebraucht. Eine Kopie der Datei build.properties.sample umbenennen in build.properties
Die so entstandene Datei build.properties editieren:
Die folgenden Zeilen entsprechend der gewählten Verzeichnisse anpassen:
tomcat40.home=c:/Apache/Tomcat4
apache2.home=c:/Apache/Apache2
apr.include=${apache2.home}/include
apr.lib=${apache2.home}/lib
so.debug=true
so.optimize=false
so.profile=false
Datei speichern.
per Konsolfenster in das Verzeichnis
jakarta-tomcat-connectors-4.0.2-01-src\jk
wechseln und die Java-Archive aufbauen und installieren:
ant
Sollte viele Meldungen bringen und mit BUILD SUCCESFUL enden
ant install
Sollte nach einigen Meldungen mit BUILD SUCCESFUL enden.
6) mod_jk.dll
Die Datei mod_jk.dll in das Verzeichnis %APACHE_HOME%\modules legen.
III Konfiguration
1) Tomcat 4.0.4
a) Die Datei workers.properties anlegen
Im Verzeichnis %TOMCAT_HOME%\conf die beiden Verzeichnisse
jk und auto anlegen.
Im Verzeichnis %TOMCAT_HOME%\conf\jk die Datei workers.properties
wie folgt anlegen :
# ----------------------------------------- begin workers.properties -----------------------------------------
# This file provides jk derived plugins with the needed information to connect to the different
# tomcat workers.
# As a general note, the characters $( and ) are used internally to define macros. Do not use them #in your own configuration!!!
# Whenever you see a set of lines such as:
# x=value
# y=$(x)\something
# the final value for y will be value\something
#
# When you are done updating workers.tomcat_home, workers.java_home and ps
# you should have 3 workers configured:
#
# - An ajp13 worker that connects to localhost:8009
# - A jni inprocess worker.
# - A load balancer worker
workers.tomcat_home=c:/Apache/Tomcat4
workers.java_home=c:/jdk1.3.1
# You should configure your environment slash... ps=\ on NT and / on UNIX
ps=\
# -------------------------- DEFAULT worket list --------------------------
# The workers that your plugins should create and work with Add 'inprocess' if you want JNI #connector
worker.list=ajp13
#worker.list=ajp13, ajp14
#------ DEFAULT ajp12 WORKER DEFINITION ------------------------------
# Defining a worker named ajp12 and of type ajp12
# Note that the name and the type do not have to match.
#worker.ajp12.port=8007
#worker.ajp12.host=localhost
#worker.ajp12.type=ajp12
# Specifies the load balance factor when used with a load balancing worker.
# Note: lbfactor must be > 0 Low lbfactor means less work done by the worker.
#worker.ajp12.lbfactor=1
#------ DEFAULT ajp13 WORKER DEFINITION ------------------------------
# Defining a worker named ajp13 and of type ajp13
# Note that the name and the type do not have to match.
#
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
# Specifies the load balance factor when used with a load balancing worker.
# Note: lbfactor must be > 0 Low lbfactor means less work done by the worker.
worker.ajp13.lbfactor=1
#worker.ajp14.port=8010
#worker.ajp14.host=localhost
#worker.ajp14.type=ajp14
#worker.ajp14.secretkey=secret
#worker.ajp14.credentials=myveryrandomentropy
#worker.ajp14.lbfactor=1
#------ DEFAULT LOAD BALANCER WORKER DEFINITION ----------------------
# The loadbalancer (type lb) workers perform wighted round-robin load balancing with sticky
#sessions. Note: If a worker dies, the load balancer will check its state once in a while.
# Until then all work is redirected to peer workers.
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp13
#------ DEFAULT JNI WORKER DEFINITION---------------------------------
# Defining a worker named inprocess and of type jni
# Note that the name and the type do not have to match.
worker.inprocess.type=jni
#------ CLASSPATH DEFINITION -----------------------------------------
# Additional class path components.
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
# Setting the command line for tomcat. Note: The cmd_line string may not contain spaces.
worker.inprocess.cmd_line=start
# Not needed, but can be customized.
#worker.inprocess.cmd_line=-config
#worker.inprocess.cmd_line=$(workers.tomcat_home)$(ps)conf$(ps)server.xml
#worker.inprocess.cmd_line=-home
#worker.inprocess.cmd_line=$(workers.tomcat_home)
# This is for Java2 / Windows
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr
# ----------------------------------------- end workers.properties -----------------------------------------
Es ist ganz lehrreich die Kommentarzeilen # zu lesen, hier nochmal die nackte Datei ohne Kommentare zum
Kopieren:
# ----------------------------------------- begin workers.properties -----------------------------------------
workers.tomcat_home=c:/Apache/Tomcat4
workers.java_home=c:/jdk1.3.1
ps=\
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
worker.inprocess.cmd_line=start
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr
# ----------------------------------------- end workers.properties -----------------------------------------
b) Die Datei %TOMCAT%\conf\server.xml editieren
i) nach <Server port="8005" shutdown="SHUTDOWN" debug="0">
(etwa in Zeile 13) folgendes ergänzen
<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"
modJk="c:/Apache/Apache2/modules/mod_jk.dll"
jkDebug="info"
workersConfig="c:/Apache/Tomcat4/conf/jk/workers.properties"
jkLog="c:/Apache/Tomcat4/logs/mod_jk.log"/>
ii) nach der Zeile <Service name="Tomcat-Standalone"> (ca. Zeile 30) folgendes
ergänzen, falls nicht schon vorhanden
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
port="8009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"/>
iii) nach der Zeile <Host name="localhost" debug="0" appBase="webapps" ...>
(ca. Zeile 178) folgendes ergänzen
<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" append="true" />
iv) Tomcat erneut starten. Wenn alles klappt, existiert im Verzeichnis
%TOMCAT_HOME%\conf\auto eine Datei mod_jk.conf.
(Es hilft nichts, diese Datei zu editieren, sie wird bei jedem Start von Tomcat neu angelegt.)
2) Apache 2.0.39
Die Datei %APACHE_HOME%\conf\httpd.conf editieren:
Es gibt zwei Möglichkeiten:
a) Ans Ende der Datei die folgende Include-Anweisung :
Include c:/Apache/Tomcat4/conf/auto/mod_jk.conf
b) Die Anweisungen von mod_jk.conf direkt in
httpd.conf angeben (flexibler !)
Ans Ende der LoadModule Abteilung folgendes ergänzen :
<IfModule !mod_jk.c>
LoadModule jk_module "c:/Apache/Apache2/modules/mod_jk.dll
</IfModule>
Am Ende der Datei folgendes ergänzen
JkWorkersFile "c:/Apache/Tomcat4/conf/jk/workers.properties"
JkLogFile "c:/Apache/Tomcat4/logs/mod_jk.log"
JkLogLevel info
<VirtualHost localhost>
JkMount /examples ajp13
JkMount /examples/* ajp13
JkMount /examples/*.jsp ajp13
#JkMount /jk ajp13
#JkMount /jk/* ajp13
#JkMount /manager ajp13
#JkMount /manager/* ajp13
</VirtualHost>