Servlet Container via mod_jk über AJP einhängen
Das ist ein kurzes Howto um Servlet-Container wie z.B. Tomcat via AJP hinter ein Apache zu hängen und so z.B. eine seperierung zwischen statischer Contentauslieferung und dem tatsächlichen Java Projekt zu erzielen.
AJP verfügbarkeit testen
Zuerst prüfen wir ob der Tomcat auch wirklich mit AJP läuft, standmässig ist der AJP Port 8009 aktiviert. Wir schauen also mit netstat nach dem der Tomcat läuft kurz nach.netstat -lanp | grep "8009" tcp6 0 0 127.0.0.1:8009 127.0.0.1:50610 VERBUNDEN 7257/jsvc tcp6 0 0 127.0.0.1:8009 127.0.0.1:50734 VERBUNDEN 7257/jsvc tcp6 0 0 127.0.0.1:8009 127.0.0.1:60735 VERBUNDEN 7257/jsvcSollte der AJP Connector nicht definiert sein (bei Debian ist der von haus aus aktiviert). Kann in der server.xml des Tomcats folgender Eintrag einkommentiert werden.
...Nach einem neustart sollte er dann verfügbar sein....
MOD_JK istallieren und aktivieren
Als nächstes installieren wir mod_jk und aktivieren es für den Apache2# modul installieren aptitude install libapache2-mod-jk # mod_jk aktivieren a2enmod jk
Worker properties definieren
Unter Debian ist mod_jk per default so konfiguriert, dass unter /etc/apache2 ein Mountfile liegen kann, dass spezifiziert wie Servlet container angesprochen werden. Diese Einstellung wird durch den Eintrag in JkWorkersFile /etc/apache2/mods-enabled/jk.conf festgelegt. Alles was wir machen müssen ist jetzt ein Worker File zu bauen.# Define list of workers that will be used # for mapping requests worker.list=multiNode # Define Node1 # modify the host as your host IP or DNS name. worker.tomcat01.port=8009 worker.tomcat01.host=192.168.0.44 worker.tomcat01.type=ajp13 worker.tomcat01.lbfactor=1 worker.tomcat02.port=8009 worker.tomcat02.host=192.168.0.45 worker.tomcat02.type=ajp13 worker.tomcat02.lbfactor=1 # Load-balancing behaviour worker.multiNode.type=lb worker.multiNode.balance_workers=tomcat01,tomcat02 worker.multiNode.sticky_session=0Das ganze speichert man unter /etc/apache2/worker.properties
Virtualhost konfigurieren und aktivieren
Als nächstes konfigurieren wir einen Virtualhost und hängen die Tomcats entsprechend in den Apache ein. Dazu erstellen wir unter /etc/apache2/sites-available/tomcattest einen neuen VirtualhostWas hier geschieht ist, das unsere Seite per Default unter /var/www/default erreichbar ist, nur der pfad /myDeployment soll zu den Tomcat-Workern geschickt werden. Ist das WebProjekt auf unseren Tomcat unter localhost:8080/myDeployment direkt ansprechbar muss das Unterverzeichnis entsprechend unter mod_jk eingehangen werden. Allerdings könnte ein Corner-Case sein, das unser projekt direkt in den Tomcat Root deployed wurde und es kein Unterverzeiczhnis ist. Dann müssen wir die Einträge etwas umschreiben.ServerName www.myserver.address.com DocumentRoot "/var/www/default" # Options Indexes FollowSymLinks MultiViews Options None AllowOverride None Order allow,deny allow from all # Send myDeployment to multiNode-Worker JkMount /myDeployment/ multiNode JkMount /myDeployment/* multiNode
... # This goes to Tomcat Servlet Containers JkMount /* multiNode # It's Apaches job to deliver images so make sure we're not pointing him to multiNode JkUnMount /images multiNode ...Jetzt noch den virtual host aktivieren und testen:
a2ensite tomcattest apache2ctl configtest apache2ctl restartDas ist eigentlich alles nach einem restart solltet ihr Verbindung mit dem Apache haben. Sollte es Probleme geben, den Tomcat zu erreichen kann unter Debian das mod_jk.log unter /var/log/apache2/mod_jk.log konsultiert werden.
Permalink Kommentare[0] Tags: container tomcat j2ee debian jkmount java servlet ajp mod_jk apache lenny ubuntu








