HowTo: Tomcat 7 Installation via mod_jk und Apache vHosts unter Debian

Tomcat Logo

Tomcat LogoDa der Apache Webserver wesentlich leistungsfähiger und flexibler als der integrierte Webserver des Tomcat ist, ist es sinnvoll diesen auch einzusetzen. Zusätzlich können wir auf die Apache Module zurückgreifen und das vHost Management verwenden. Die Lösung wird via dem Apache Modul mod_jk realisiert, welches sämtliche Webserveranforderungen über das AJP Protokoll an den Tomcat weiterleitet.

Vorbereitung

*) Apache Tomcat 7 Installation wie in diesem HowTo beschrieben

*) Apache Webserver Installation (mod_jk kann auch in bestehende Installationen integriert werden)

aptitude install apache2

Installation und Konfiguration des mod_jk Apache Moduls

Das mod_jk Apache Modul kann bequem über das Debian Repository installiert werden:

aptitude install libapache2-mod-jk

Debian installiert dabei bereits die entsprechende Beispielkonfiguration mit, welche wir für unsere Zwecke editieren. Wenn die Tomcat Installation noch bei der Standardinstallation belassen wurde, müssen nur die ersten beiden Werte angepasst werden.

vi /etc/libapache2-mod-jk/workers.properties
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/lib/jvm/java-7-oracle
ps=/
worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
worker.ajp13_worker.lbfactor=1

In folgendem Schritt erstellen wir die Apache Modul Konfigurationsdatei für mod_jk mit folgenden Werten (Nur bei Debian 6 Squeeze notwendig) Wheezy erstellt die Konfiguration bereits in der Datei /etc/apache2/mods-enabled/jk.conf:

vi /etc/apache2/conf.d/mod-jk.conf
JkWorkersFile /etc/libapache2-mod-jk/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel error
JkShmFile /var/log/apache2/jk-runtime-status

Apache vHost (Virtual Host) erstellen

Da nun die Grundkonfiguration des mod_jk abgeschlossen ist, legen wir nun einen vHost für eine Testdomain auf unseren Apache Webserver an (zB:. vhost.domain.com) und laden via JkMount den ajp13_worker nach /:

vi /etc/apache2/sites-available/vhost.domain.com

 


    JkMount /* ajp13_worker
    ServerName vhost.domain.com
    DocumentRoot /usr/local/tomcat/webapps
    ErrorLog /usr/local/tomcat/logs/error.log
    CustomLog /usr/local/tomcat/logs/access.log common
    
        Options -Indexes
    

Nun aktivieren wir den neuen vHost und starten den Apache Webserver neu:

a2ensite vhost.domain.com
/etc/init.d/apache2 restart

Tomcat vHost (Virtual Host) konfigurieren

Da nun der Apache Webserver soweit konfiguriert ist um mit dem Tomcat über den AJP Connector zu kommunizieren, müssen wir die vHosts für den Tomcat noch entsprechend einrichten. In folgendem Beispiel wird die Domain vhost.domain.com auf das Beispiel Verzeichnis des Tomcats konfiguriert (/usr/local/tomcat/webapps/examples).

vi /usr/local/tomcat/conf/server.xml

 

 
             
             
      

Damit die Konfiguration aktiv wird starten wir den Tomcat neu:

/etc/init.d/tomcat stop
/etc/init.d/tomcat start 

Testen der Apache mod_jk Tomcat Integration

Nun kann im via Browser auf den entsprechenden Hostnamen zugegriffen werden wo unsere Beispiele angezeigt werden sollte:

Apache Tomcat Beispiele

HowTo: Tomcat 7 Installation via mod_jk und Apache vHosts unter Debian, 5.0 out of 5 based on 8 ratings
GD Star Rating
loading...
Patrick Schoyswohl

Patrick Schoyswohl

Systemadministrator
Hallo, mein Name ist Patrick Schoyswohl und ich bin Systemadministrator in einer Agentur für neue Medien und seit 2009 Betreiber und leidenschaftlicher Blogger von SysADMINsLife.com. Meine Leidenschaft gehört den Webservern und der Serverüberwachung auf Open-Source Basis. Falls du gefallen an meinen Artikel hast, kannst du mir gerne auf Google+, Facebook oder Twitter folgen.
Patrick Schoyswohl
Making Sites Uber Fast! Yeah @filiwiese #seokomm https://t.co/avT4fU6pZw - 3 Monaten ago
Patrick Schoyswohl

Tags: , , , , , , , ,

Dienstag, 12. Juni 2012 Linux, WebServer Author: Patrick Schoyswohl

17 Comments zum Thema HowTo: Tomcat 7 Installation via mod_jk und Apache vHosts unter Debian

  • Carl sagt:

    Vielen Dank für die Anleitung. Ich werde mal versuchen, die Eins zu Eins umzusetzen. Ich bin mal gespannt, ob es bei mir klappt.

  • Jack sagt:

    Funktioniert zwar wie beschrieben, allerdings wurden bei mir alle Domains auf den Tomcat umgeleitet, auch solche die eigentlich auf PHP-Anwendungen verweisen, die vom Apache ausgeliefert werden müssen. Wie kommt das? Ich hab wie beschrieben einen Virtualhost nur für eine einzelne Domain angelegt. Alle anderen haben normale Einträge in sites-available.

  • Patrick sagt:

    Hi Jack,
    Wie sind denn die anderen VirtualHost ….. Direktiven eingetragen? Also der Wert von ….. Eventuell liegt hier der Fehler begraben?

    Gruß Patrick

  • Tomek sagt:

    Vielen Dank für die Anleitung. Funktioniert zwar wie beschrieben allerdings nur local d.h. wenn ich die Adresse von einem anderem Rechner aufrufe mit der IP am Anfang z.b. 192.168.1.100/vhost.domain.com bekomme ich nur eine 404 Fehlermeldung.

    • Patrick sagt:

      Hi Tomek,

      wie lautet denn die Fehlermeldung?
      Ist die Domain auch sauber im Apache konfiguriert und stimmt die Zuordnung in den VirtualHosts Direktiven?

      Gruß
      Patrick

      • Tomek sagt:

        HTTP Status 404 – /vhost.domain.com
        type Status report
        message /vhost.domain.com
        description The requested resource (/vhost.domain.com) is not available.

        Apache Tomcat/7.0.28

        Was meinst Du mit „Ist die Domain auch sauber im Apache konfiguriert“? Habe eigentlich nicht mehr aber auch nicht weniger gemacht als in deiner Anleitung stand 🙂

  • Johann sagt:

    Hi,

    deine Anleitung ist super, danke!

    ich habe als vhost meine Domain irgendwas.com eingetragen. Wenn ich die Domain jetzt aufrufe erscheint die Default Seite „It Works…“ denke mal vom Apache.. Im Tomcat log steht auch immer noch die Meldung.. von wegen The APR based Apache Tomcat Native … sollte die nicht verschwinden?

    muss ich den Tomcat nicht auch auf Port 80 umstellen? das gibt aber auch nen Konflikt mit dem Apache ..

    weiß grade net mehr weiter.
    würde gerne die Anwendung die ich in der docbase statt examples angegeben habe sehen 🙂

    gruß

    • Hallo Johann,

      der Tomcat darf nicht auf dem Port 80 laufen, weil da ja dein Apache Webserver läuft.
      Dieser integriert den Tomcat über den AJP Port (8009).

      Eigentlich funktioniert die Anleitung so wie sie geschrieben ist, hast du vielleicht einen Schritt ausgelassen?
      Apache und Tomcat neu gestartet?
      Logfiles im Apache überprüft?

      Gruß
      Patrick

    • Igor sagt:

      Hi,

      ich hatte das gleiche Problem. Wie habe ich es gelöst?
      1. In der server.xml von dem Tomcat folgende Zeile einkommentiert:
      2. Beim Apache den ssl-Mod aktiviert: a2enmod ssl

    • Igor sagt:

      Ok … die Zeile die ich unter Punkt 1 angesprochen habe wird nicht angezeigt xD

      Im Kommentar über der Zeile steht „Define an AJP 1.3 Connector on port 8009″. Das ist ein Connector mit protocol=“AJP/1.3“.

    • Igor sagt:

      Ok, sry, noch eine korrektur.

      Das mit ssl war natürlich quark :P. Seltsamerweise funktioniert das nie nach startup des Servers. Erst wenn ich (nach einem server reboot) den apache nochmal restarte, funktioniert das.

      Seltsam -.-„

  • simt sagt:

    Danke für das Skript. Mit mehreren Tomcat-Instanzen auf einem System funktioniert es aber nicht richtig, ich habe es so umgebaut dass es PID-Files verwendet:

    21a22
    > CATALINA_PID=“$TOMCAT_PATH/logs/tomcat.pid“
    23c24

    28c29,30
    export CATALINA_PID
    >
    30,31c32,36
    < echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'`
    if [ -f $CATALINA_PID ]
    > then
    > cat $CATALINA_PID
    > fi
    > }

  • Christopher sagt:

    Hallo habe das ganze auf meinem Raspberry Pi versucht. Leider kann ich den Host nicht aufrufen. Im Tomcat wird er mir zwar angezeigt, wenn ich die Domain aber aufrufe kommt immer „Service Temporarily Unavailable“.

    Hat es evtl. damit zu tun, dass mein „Server“ über eine Subdomain erreichbar ist? rasp.meineDomain.de?

    Den Vhost habe ich als vhost.rasp.meineDomain.de angemeldet.

    Die Apache logs sagen folgendes:

    [Sat Aug 23 12:08:34.326 2014] [18127:3068981248] [info] init_jk::mod_jk.c (3365): mod_jk/1.2.37 initialized
    [Sat Aug 23 12:08:34.326 2014] [18127:3068981248] [error] extension_fix::jk_uri_worker_map.c (564): Could not find worker with name ‚jk-manager‘ in uri map post processing.
    [Sat Aug 23 12:08:34.327 2014] [18127:3068981248] [error] extension_fix::jk_uri_worker_map.c (564): Could not find worker with name ‚jk-status‘ in uri map post processing.

    • bossi sagt:

      In Deiner Tomcat server.xml hast Du wahrscheinlich nicht den AJP connector aktiviert (ist bei tomcat7 auf wheezy by default auskommentiert:

  • Leave a Reply

    Werbung schalten

    *=Affiliatelink

    Blogverzeichnis - Blog Verzeichnis bloggerei.de