Mod_jk2

Tomcat et Apache, un couple gagnant

Tomcat, Apache, ModJK

Apache 2.x dispose d'un module appelé mod_jk2 qui permet de l'interfacer de façon avancée avec un serveur Tomcat. Le serveur Apache est alors le serveur frontal qui reçoit les requêtes. Il se charge de fournir le contenu statique (images, downloads), de demander à Tomcat (via le mod_jk) la génération d'une page ou bien encore de générer les pages PHP (via mod_php4).

Cette méthode est beaucoup plus flexible que d'utiliser Tomcat seul. C'est un gage de sécurité supplémentaire et assure une meilleure montée en charge.

Les procédures fournies dans ce tutorial se basent sur :

Préparation de Tomcat

Installation de Tomcat 4

~/# apt-get install tomcat4

Ajout d'hôtes virtuels

La seconde étape consiste à définir dans la configuration de Tomcat un mapping pour chacune des applications webs utilisées. Prenom un exemple simple : je veux que lorqu'une requête sera effectuée sur le nom "mawebapp.drazzib.com", l'application « mawebapp » soit instanciée. Il est possible ainsi de définir plusieurs Virtual Host avec pour chacun une application web attachée. Les paramètres à modifier se situent dans le fichier /etc/tomcat4/server.xml de Tomcat.

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8009"
    protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler">
    
        <Host name="mawebapp.drazzib.com" debug="0" appBase="mawebapp" 
       unpackWARs="true" autoDeploy="true">
                <Context path="" docBase="" debug="1"/>
        </Host>
        
</Connector>

Apache

Installation d'Apache

~/# apt-get install apache2 libapache2-mod-jk2

Création d'un hôte virtuel pour Apache

Les options d'Apache sont définies dans un fichier de personnalisation : /etc/apache2/sites-enabled/mawebapp

<VirtualHost mawebapp.drazzib.com:80>
    # Les parties statiques de mawebapp
    # sont traitées par Apache via des Alias
    Alias /images /usr/share/tomcat4/webapps/mawebapp/images
    Alias /css    /usr/share/tomcat4/webapps/mawebapp/css

    # Interdiction aux visiteurs d'aller se promener
    # dans les répertoires de config de mawebapp
    <Location "/WEB-INF/">
        AllowOverride None
        deny from all
    </Location>
    <Location "/META-INF/">
        AllowOverride None
        deny from all
    </Location>
    
    # On ne transmet les requêtes à Tomcat
    # que lorqu'elle commence par « /servlet/ »
    # ou par *.jsp
    <Location "/servlet/">
       JkUriSet worker ajp13:localhost:8009
    </Location>
    <Location "/*.jsp">
       JkUriSet worker ajp13:localhost:8009
    </Location>
    
</VirtualHost>

Mod_Jk2

Il faut ensuite activer le module jk2 dans la configuration d'Apache. La commande a2enmod permet d'activer un des modules. À l'inverse, a2dismod, permet de désactiver un module.

# a2enmod jk2

Regardons de plus près la configuration du module jk2 dans le fichier /etc/apache2/mods-enabled/jk2.conf

JKSet config:file /etc/apache2/workers2.properties

Ce fichier workers2.properties doit contenir :

[logger.apache2]
level=ERROR

[shm]
file=/var/log/apache2/shm
size=1048576

[channel.socket:localhost:8009]
port=8009
host=127.0.0.1

[ajp13:localhost:8009]
channel=channel.socket:localhost:8009