4
2009
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??
Publicité :)
Articles récents
- Memento VI – Boostez Votre Productivité avec Vi : Trucs et Astuces à Connaître
- Configuration de Nginx pour Obtenir l’IP Réelle des Visiteurs avec CloudFlare
- Récupérer les informations d’un Ordinateur Terra à partir du numéros de série avec Python
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc…
- Failed to Start File System Check – Vcenter 7
Mot-clefs
Commentaires récents
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc… dans
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc… dans
- Rotation des logs avec logrotate dans
- Hôte déconnecté sur le Vcenter. Impossible de se connecter à l’ESX. dans
- Pourquoi mon interface vlan ne veut pas devenir up ? dans
Bonjour,
Est til possible de faire une redirection tout en gardant l’URL saisi?
C’est à dire lorsque j’écris http://monapplifrancais.com j’aimerais qu’il redirige sur http://monappli.com/francais mais que l’url dans le navigateur reste http://monapplifrancais.com
Merci
Bonjour,
Tout d’abord, merci pour cet article, clair et intelligent.
J’ai un petit problème avec la redirection.
En faisant comme toi (c’est a dire “RewriteRule ^/$ /MonAppli [PT]”) Si je veux
http://www.mondomaine.fr/, j’obtiens http://www.mondomaine.fr/MonAppli.
Ce que je voudrais c’est que pour cet virtualhost http://www.mondomaine.fr/ -> obtient http://www.mondomaine.fr/ mais dans mon appli.
J’ai trouvé cette expression pour cela :
rewriteRule ^/(.*)$ /MonAppli/$1 [L,PT]
cela fonctionne très bien, sauf que j’ai l’impression de ne plus avoir de session ou renouveler à chaque requête.
Merci pour ton aide.