Passerelle entre Apache et Tomcat

June 18, 2008

Dans le but de déployer mes applications J2ee j’ai installé GlassFish (avec Tomcat). Je souhaitais pouvoir utiliser ce serveur sur le port 80 tout en ayant Apache qui écoute sur ce port.

Apache et Tomcat étant des produits développés par la même équipe il existe une solution très simple pour faire interagir les deux serveurs.

Configuration de Apache

Il faut installer le module Jk de Apache :

apt-get install libapache2-mod-jk
a2enmod mod_jk

On va ensuite créer un VirtualHost dans la configuration de Apache /etc/apache2/sites-available/default :

<VirtualHost demo.mkhelif.fr:80>
    ServerName demo.mkhelif.fr
    ServerAdmin [email protected]
    JkMount / worker1
    JkMount /* worker1
</VirtualHost>

On configure le module *Jk **/etc/apache2/mods-available/jk.load* :

LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so
JkWorkersFile /etc/apache2/workers.conf
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

On crée alors le fichier /etc/apache2/workers.conf :

workers.java_home=/path/to/jre/
ps=/
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactory=1

Apache est désormais configuré pour rediriger toutes les requêtes du domaine demo.mkhelif.fr vers Tomcat par AJP. Il faut configurer Tomcat pour écouter sur ce port.

Tomcat en standalone

Pour configurer Tomcat en version standalone (sans serveur d’applications), il suffit de modifier le fichier server.xml pour ajouter le connecteur AJP :

<Connector port="8009" enableLookups="false" debug="0" redirectPort="8443"
           protocol="AJP/1.3" serverAdresse="127.0.0.1" />

Il suffit alors de redémarrer Tomcat et Apache. Lorsque vous accédez à la page : http://demo.mkhelif.fr/ vous arrivez sur la page d’accueil de Tomcat.

Tomcat inclus dans GlassFish

Lorsque Tomcat est inclus dans un serveur d’applications (comme GlassFish) il faut ajouter certaines librairies au serveur :

commons-logging.jar
commons-modeler.jar
commons-digester.jar

Ces librairies peuvent être téléchargées sur le site de Jakarta.

Il faut ensuite copier la librairie permettant d’activer le connecteur AJP pour Tomcat. Cette librairie est fournie avec Tomcat… il faut donc télécharger Tomcat… la version inclue avec GlassFish ne contient pas cette librairie.

Tomcat 5.x et antérieur :
<Tomcat>/server/lib/tomcat-ajp.jar
Tomcat 6.x :
<Tomcat>/lib/tomcat-ajp.jar

Copier toutes ces librairies dans le répertoire : */lib/*

Il faut redémarrer GlassFish et la passerelle entre Apache et GlassFish est activée.