Les serveurs apache et tomcat sont souvent amenés à cohabiter sur la même machine, cet article va vous permettre de faire partager à vos deux serveurs le saint port 80.
La solution consiste à utiliser votre serveur apache sur le port 80 en tant que serveur frontal. Les requêtes seront donc traitées par votre serveur frontal. Selon votre configuration, certaines requêtes seront dès lors redirigés vers par le serveur apache vers le serveur tomcat qui lui fonctionne le plus souvent sur le port 8080.
Pourquoi ne pas utiliser un seul et même serveur Apache?
C’est vrai qu’un serveur Tomcat n’est rien d’autre qu’un serveur apache configuré pour utiliser des application J2EE (Servlet/Jsp). alors pourquoi ne pas utiliser ce même serveur apache pour traiter nos autres requêtes HTTP. Justement, le serveur apache de tomcat est un serveur enitèrement configuré et optimisé pour l’utilisation des applications J2EE, il ne dispose donc pas des mêmes fonctions de paramètrageset d’optimisations qu’Apache et reste par conséquent plus lent qu’un serveur Web traditionnel. C’est pourquoi il est courant de mettre en place un serveur Apache en frontal chargé de traiter et de filtrer les différentes requêtes Http qu’il reçoit. Le serveur Apache délivre alors les ressources statiques tels que des pages HTML,ou des images ( éventuellement des pages dynamiques en php selon les besoins). Les autres requêtes sont redirigées vers le serveur Tomcat qui lui va traiter les requêtes J2EE.
Cette architecture a aussi l’avantage de proteger votre serveur d’application Tomcat. En effet, les requêtes passent dans un premier temps par le serveur frontal avant d’être redirigées. En cas d’attaque, le serveur frontal sert pare-feu et peut filtrer le cas échéant les requêtes afin de mettre à l’abris votre conteneur d’applicationTomcat.
Comment fait-on?
Il faut dans un premier temps télécharger le connector JK adapté à votre version d’apache à l’adresse http://www.apache.org/dist/tomcat/tomcat-connectors/jk/ . Si votre version d’apache est la version 2.2.10, vous devez télécharger le fichier mod_jk-1.2.27-httpd-2.2.10.so
Copier le fichier dans le répertoire modules de votre répertoire d’install d’apache, renommez le fichier en mod_jk.so
Il faut ensuite configurer le fichier httpd.conf dans le répertoire <Repertoire_install_apache>/conf/httpd.conf
Chercher dans le fichier les lignes LoadModule pour y ajouter les lignes suivantes (laissez le ouvert pour l’éditer plus tard):
LoadModule jk_module modules/mod_jk.so
Dans le répertoire conf d’apache, créer un fichier worker.properties et copier ces lignes:
worker.list=worker1 worker.worker1.port=8009 worker.worker1.host=localhost worker.worker1.type=ajp13
Nous allons maintenant définir les directives Jk pour apache afin de lui indiquer le fichier à utiliser
JkWorkersFile conf/worker.properties JkLogFile logs/mod_jk.log
Nous pouvons maintenant configurer apache pour lui indiquer les requêtes à traiter et celles à transmettre à tomcat. Les directives suivantes sont à ajouter dans le fichier httpd.conf
Rediriger un répertoire complet vers tomcat
JkMount /manager/* worker1
Vous pouvez maintenant accéder à votre manager Tomcat depuis votre apache à l’adresse http://localhost/manager/html
Ajout du 17 Novembre 2010
Ensuit, si vous déployez une application « Demo » sur votre serveur Tomcat accessible à l’adresse http://localhost:8080/Demo/ et que vous souhaitez le rendre accessible sur votre apache, il vous suffit d’ajouter une nouvelle directive JK:
JkMount /Demo/* worker1
Apache se chargera alors de rediriger toute les requêtes http://localhost/Demo/ vers le connecteur de Tomcat
Et le contenu statique … on le met où sur apache ?
L’article n’est pas complet !