Attention, depuis novembre 2004, l'utilisation du mod_jk2 n'est plus recommandée. En effet, le manque d'intérêt de la part des développeurs et la complexité de configuration ont entraîné la mort progressive du projet. Les améliorations apportées à mod_jk2 ont été reprises dans mod_jk. Les versions > 1.2.8 du connecteur mod_jk sont donc désormais utilisables avec Apache 1.3 ET avec Apache 2.
Pour plus d'informations, voir cette page.
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 :
~/# apt-get install tomcat4
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>
~/# apt-get install apache2 libapache2-mod-jk2
Les options d'Apache sont définies dans un fichier de personnalisation
<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 lorsqu'elle commence par « /servlet/ »
# ou par *.jsp
<Location "/servlet/">
JkUriSet worker ajp13:localhost:8009
</Location>
<Location "/*.jsp">
JkUriSet worker ajp13:localhost:8009
</Location>
</VirtualHost>
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
[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