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 : *
Il faut redémarrer GlassFish et la passerelle entre Apache et GlassFish est activée.