Tomcat + JkMount + Apache + Plesk + Ubuntu

Heute bin ich nun endlich dazu gekommen auf einem ubuntu mit einen zu installieren und in unter dem Port 80 mit mod_jk verfügbar zu machen. Wichtig dabei ist, das diese Anleitung für 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

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:

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:

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 noch nicht installiert ist kann dies ebenfalls manuell oder über die Paket Verwaltung statt finden. Da Plesk vorhanden ist und Plesk start in den infiltriert ist, habe ich mich für die Paket Version entschieden. Dies kann mit

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

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:

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:

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

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.

Tobi

Author: Tobi

I am an software developer and project manager and have interest for the topics wordress, spring, java, agile, lean, kanban, scrum, javascript, motivation and good software development.

5 thoughts on “Tomcat + JkMount + Apache + Plesk + Ubuntu”

  1. Hallo,

    danke für das großartige Tut! Klappt alles super, bis auf die letzte Einstellung funktioniert alles. Hier muss ich immer ein /* setzen, damit es funktioniert, der Projektname an und für sich nicht.

    Im Log steht folgender Fehler:
    map_uri_to_worker_ext::jk_uri_worker_map.c (962): Uri * is invalid. Uri must start with /

    Hast du eine Idee wo der Fehler herkommt? Muss ich noch extra ein Forwarding im Tomcat einstellen?

        1. Hi!

          Danke für die Hilfe, da war ich schon auf dem richtigen Weg. Nutze nun folgende Lösung:

          RewriteEngine On
          RewriteRule ^/*$ /Project1/index.xhtml [R=301]

          ##Hier will
          RewriteRule Project1/(.*)$ /$1

          Die Weiterleitung funktioniert. Nur habe ich es bisher nicht geschafft, dass der Projektname selbst ignoriert wird.

          Hast du evtl. noch einen konkreteren Tipp?

          Danke & Grüße,
          Marco

Leave a Reply

Your email address will not be published. Required fields are marked *