Tomcat + JkMount + Apache + Plesk + Ubuntu

Heute bin ich nun endlich dazu gekommen auf einem ubuntu Webserver mit Plesk einen Tomcat zu installieren und in unter dem Port 80 mit mod_jk verfügbar zu machen. Wichtig dabei ist, das diese Anleitung für Plesk größer 10.0 und ubuntu geschrieben ist. Bei einem anderen Betriebssystem werden vermutlich die Pfade an denen die Konfigurationen vorhanden sind, sowie die Namen der Konfigurationsdateien anders sein. Tomcat installieren Für die Installation eines Tomcats gibt es 2 verschiedene Möglichkeit, entweder es wird die Paket Version (bei Windows exe) oder die Zip Version verwendet. Ich habe mich für die zip Version zum entpacken entschieden, da ich dort eine neue Version verwenden kann und den Ort der Installation selbst entscheiden kann. Für beide Varianten ist eine installierte Java Version Voraussetzung. Unter Ubuntu kann das Paket mit

sudo apt-get install tomcat6

installiert werden. Das folgende ist nur wichtig, falls die Zip Datei anstatt der Paket Version verwendet wird. Die Zip Datei kann unter http://tomcat.apache.org/whichversion.html heruntergeladen werden. Nach dem herunterladen kann die Zip Datei in einen beliebigen Ordner entpackt werden. Um den Tomcat auch als tomcat User starten zu lassen, muss der Tomcat User mit den folgenden Befehlen noch erstellt werden:

groupadd tomcat
useradd -g tomcat -s /usr/sbin/nologin -m -d /home/tomcat tomcat

Ein Login mit dem Benutzer wird nicht möglich sein, was wir aber auch nicht benötigen. Zum Starten des Tomcats müssen wir noch einige Variablen definieren. Ich habe mir dafür das folgende Startscript gebaut. Das Script erfüllt die minimal Anwendung, es gibt im Internet aber ausfürlichere Skripte mit denen dann alle Befehle für den Tomcat verwendet werden können:

export JAVA_HOME=PATH_TO_JAVA
export PATH=$JAVA_HOME/bin:$PATH
export CATALINA_HOME=PATH_TO_TOMCAT
export CATALINA_BASE=PATH_TO_TOMCAT
su -p -s /bin/sh tomcat $CATALINA_HOME/bin/startup.sh

Die Datei kann dann unter start.sh gespeichert werden. Zum Stoppen des Tomcats muss statt startup.sh shutdown.sh am Ende verwendet werden. Mod_JK installieren Fall der mod_jk für Apache noch nicht installiert ist kann dies ebenfalls manuell oder über die Paket Verwaltung statt finden. Da Plesk vorhanden ist und Plesk start in den Apache infiltriert ist, habe ich mich für die Paket Version entschieden. Dies kann mit

apt-get install libapache2-mod-jk

installiert werden. Danach muss über die Plesk Oberfläche geprüft werden ob das Apache Modul “jk” aktiviert ist. Bei Plesk Versionen kleiner 10.0 ist dies noch nicht möglich, dort kann dies im Ordner mods-enabled in etc/apache2/ nach geschaut werden. Ist JK noch nicht aktiv kann versucht werden dies über die Oberfläche oder mit

sudo a2enmod jk

zu aktivieren. Danach kann über /etc/apache/workers.properties die Verbindung zum Tomcat konfiguriert werden. Durch Plesk ist es nicht möglich eine andere Datei zu verwenden da in den automatisch von Plesk generierten Konfigurationen schon alle Werte für JkWorkerFile bis JkLogFile vorhanden sind und ein Überschreiben durch Eintragen der Werte in apache2.conf nicht möglich ist. Das eintragen einer weiteren workers.properties führt zum nicht starten des Tomcats, die anderen Konfigurationsvariablen werden einfach nicht beachtet. Tomcat mit Apache verbinden Da aktuell nur ein Tomcat vorhanden ist, wird auch nur ein Worker benötigt. Daher kann folgendes in die worker.properties eingetragen werden:

worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type= ajp13

Damit der Tomcat auf diese Verbindungsdaten reagiert, muss der folgende Eintrag in der server.xml vorgenommen werden (dieser ist evtl. schon vorhanden und evtl. noch kommentiert):

Die Ports können natürlich auf die eigenen Wünsche angepasst werden. Weiterleitung von Apache auf Tomcat bei einer Domain Da Plesk die Konfigurationen für die Domains immer wieder bei Änderungen überschreibt muss eine eigene Konfigurationsdatei mit dem Namen vhost.conf in das conf Verzeichniss der Domain gelegt werden. Dort kann dann z.B. folgendes eingetragen werden:

JkMount /myfirstwebapp worker1

Damit diese Änderung übernommen wird muss noch das folgende Skript von Plesk ausgeführt werden:

/usr/local/psa/admin/sbin/websrvmng -u –vhost-name=namederdomain

Danach muss nur noch der Tomcat gestartet werden und der Apache neugestartet werden dann ist unter http://namederdomain/myfirstwebapp die Anwendung auf dem Tomcat zu erreichen. Zur Sicherheit kann zustätzlich der Port des Tomcats über die Firewall von außen deaktiviert werden, dadurch kann der Tomcat nicht direkt über die Urls aufgerufen werden sondern nur die Anwendungen welche man mit JkMount verfügbar gemacht hat.