07 mai 2009

Tomcat + Apache : Configurer plusieurs Virtual Host


Je viens de configurer tomcat et apache pour avoir plusieurs VirtualHost avec une seule instance de Tomcat.


Ma configuration
Apache 2
Tomcat 5.5
Ubuntu

L'objectif
http://sous-dom1.domaine.com -> /webapps/monappli1
http://sous-dom2.domaine.com -> /webapps/monappli2
Il faut évidemment que vous ayez configuré apache avec le mod_jk pour coupler apache2 et tomcat.
Voici quelques liens utiles à ce sujet :
Couplage Apache HTTP / Tomcat
Configuring Apache Mod_JK

Dès que vous avez configuré tout cela, il ne reste plus qu'à ouvrir quelques fichiers :

worker.properties
server.xml

et en créer quelques-uns :
/etc/apache2/sites-available/sous-dom1.domaine.com.conf
/etc/apache2/sites-available/sous-dom2.domaine.com.conf

worker.properties
workers.tomcat_home=/usr/share/tomcat5.5
workers.java_home=/usr/lib/jvm/java-6-sun
ps=/
worker.list=worker1, worker2
worker.worker1.port=8009
worker.worker1.host=sous-dom1.domaine.com
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

ps=/
worker.worker2.host=sous-dom2.domaine.com
worker.worker2.port=9009
worker.worker2.type=ajp13
worker.worker2.lbfactor=1

worker.loadbalancer.balanced_workers=worker1, worker2

server.xml
Il faut deux Connector avec deux ports différents

<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
<Connector port="9009" enableLookups="false" redirectPort="443" protocol="AJP/1.3"/>

Mettez un domaine en defaultHost

le paramètre appBase est le répertoire où se trouve la webapp
le paramètre name est le nom de domaine

<Engine name="Catalina" defaultHost="sous-dom1.domaine.com">
<Host name="sous-dom1.domaine.com"
appBase="/vers/mon/rep/webapps/monappli2"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>

<Host name="sous-dom2.domaine.com"
appBase="/vers/mon/rep/webapps/monappli2" unpackWARs="true"
autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

</Host>
</Engine>

/etc/apache2/sites-available/sous-dom1.domaine.com.conf
<VirtualHost :80>
DocumentRoot "/vers/mon/rep/webapps/monappli1"
ServerName sous-dom1.domaine.com:8009
Alias / /vers/mon/rep/webapps/monappli1
JkMount /* monappli1
DirectoryIndex index.jsp index.gsp
</VirtualHost>
Remarquez le ServerName avec le port 8009 qui correspond à la configuration du VirtualHost ainsi que le JkMount qui pointe vers monappli1


/etc/apache2/sites-available/sous-dom2.domaine.com.conf
Idem que le fichier précédent mais en modifiant le port, le répertoire et l'application.
Redémarrez votre serveur Tomcat et c'est parti.
Malgré tout, n'oubliez pas de configurer le fichier Bind
Et le tour est joué !


1 commentaire:

Unknown a dit…

je ne sais pas pourquoi sa fonctionne pas chez moi, j'ai un seul context

quand je met l'adresse ip sans le nom du projet, sa affiche la page d'accueil d'apache