mar 09
4
Redirection apache tomcat avec mod_jk et rewriterule
Pour que les utilisateurs de vos applications Tomcat n’aient plus à mémoriser leurs ports, nous pouvons utiliser un module d’apache permettant de discuter avec le serveur Tomcat de manière invisible (Mod_jk).
Exemple :
http://monappli.mondomaine.fr:8080/MonAppli deviendra http://monappli.mondomaine.fr/MonAppli
Dans cet article, nous verrons également comment rediriger http://monappli.mondomaine.fr/ vers http://monappli.mondomaine.fr/MonAppli automatiquement.
Pré-requis :
Récupérer le mod_jk :
http://archive.apache.org/dist/jakarta/tomcat-connectors/jk/source/jk-1.2.15/
Véfifiez que le paquet http-devel est bien installé.
Mise en œuvre :
Décompresser jakarta-tomcat-connectors-1.2.15-src.tar.gz :
tar xvzf jakarta-tomcat-connectors-1.2.15-src.tar.gz
Compiler mod_jk :
cd jakarta-tomcat-connectors-1.2.15-src/jk/native
./configure –with-apxs=/usr/sbin/apxs
make
Placer le fichier mod_jk.so dans /etc/httpd/modules
cd apache-2.0
cp mod_jk.so /etc/httpd/modules
Création du fichier workers.properties permettant à apache de discuter avec le serveur Tomcat
touch /etc/httpd/workers.properties
vi /etc/httpd/workers.properties
Copiez ce texte dans le fichier en le modifiant les données en rouge pour qu’elles correspondent à votre configuration.
workers.tomcat_home=/usr/local/tomcat # Chemin vers votre serveur Tomcat
workers.java_home=/usr/java/jdk1.5.0_15 # Correspond au JAVA_HOME
ps=/
worker.list=worker1 # Correspond au nom de la liaison entre apache et tomcat
worker.worker1.port=8009 # Correspond au port AJP 1.3 du serveur Tomcat
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=worker1 # Pour faire de la repartition de charge
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
worker.inprocess.cmd_line=start
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)
i386$(ps)classic$(ps)libjvm.so
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr
Configuration de tomcat :
Ouvrir le fichier server.xml situé dans le répertoire « conf » de l’arborescence tomcat et ajoutez :
Ajoutez à la fin du fichier entre les balises <Host> et <Engine> :
<Listener className= »org.apache.jk.config.ApacheConfig » modJk= »/etc/httpd/modules/mod_jk.so »
workersConfig= »/etc/httpd/workers.properties« />
Configuration d’apache :
Ouvrir le fichier httpd.conf situé généralement dans /etc/httpd/conf/httpd.conf
Chercher les lignes correspondant à « LoadModule » et ajoutez à la fin de la liste :
LoadModule jk_module « /etc/httpd/modules/mod_jk.so » # Chemin du module JK
JkWorkersFile « /etc/httpd/workers.properties » # Chemin du fichier workers.properties
JkLogFile « /usr/local/tomcat/logs/mod_jk.log » # Chemin du fichier log de mod_jk
JkShmFile « /usr/local/tomcat /logs/mod_jk.shm » # Chemin du fichier shm du mod_jk
JkLogLevel info # Niveau de log
JkLogStampFormat « [%a %b %d %H:%M:%S %Y] » #Format des logs
Le VirtualHost devra ressembler à cela :
<VirtualHost *:80>
ServerName monappli.mondomaine.fr
ServerAlias monappli
CustomLog logs/monappli_access.log combined
ErrorLog logs/monappli_error.log
JkMount /* worker1 #Il faut utillisé le meme nom que dans le fichier workers.properties
JkLogFile logs/MonAppli_mod_jk.log
JkLogLevel 9
</VirtualHost>
Redémarrer Apache et Tomcat :
/usr/local/tomcat/bin/shudown.sh
/usr/local/tomcat/bin/startup.sh
Service httpd restart
Pour tester, allez avec votre navigateur sur monappli.mondomaine.fr/MonAppli
Réécriture d’url :
Pour ne plus avoir à taper le nom de l’appli après le domaine, il faut faire de la réécriture d’Url.
Exemple :
Nous avons une application qui est accessible via http://monappli.mondomaine.fr/MonAppli. Nous voulons modifier l’url pour que lorsque l’on pointe sur http://monappli.mondomaine.fr/ , nous accédions automatiquement à http://monappli.mondomaine.fr/MonAppli/.
Pour cela, ouvez votre fichier httpd.conf. Dans le VirtualHost correspondant à votre application, ajouté à la fin :
RewriteEngine On
RewriteRule ^/$ /MonAppli [PT]
Et voilà une belle redirection n’est ce pas??