Home
Articles (French)


Installation de Tomcat
en combinaison avec un serveur Apache
sur une machine Linux

Prérequis:

ce qu'on va rajouter:

...et on va tout brancher ensemble.

 

Installation du jdk

on peut téléchérger deux version pour Linux, une version RedHat RPM shell script et une version GNUZIP Tar shell script.

  • option 1) version GNUZIP Tar shell script
    • Une fois téléchargé, il faut éxécuter le shell script, pour ce faire, il faut modifier les droits sur le fichier:
      • chmod u+x ./j2sdk-1_3_1_01-linux-i386.bin
    • puis éxecuter le script:
      • ./j2sdk-1_3_1_01-linux-i386.bin
    • répondre yes à la licence, et hop le TGZ va simplement décompresser le jdk dans le repertoire courant et créer le repertoire jdk1.3.1_01.
    • Vous avez donc installé java dans vore repertoire courant.
    • Pour le rendre disponible à tout les utilisateurs il faut le placer dans un enroit accessible de tous et si possible standard. C'est à dire dans /usr/java/, mais ce n'est pas nécessaire si il n'y a que vous qui en ayez besoin.
    • pour passer root:
      • su (puis saisit du mot de passe root)
      • mkdir /usr/java (pour créer le repertoire java)
      • mv ./jdk1.3.1_01 /usr/java (pour déplacer le repertoire jdk1.3.1_01 dans le nouveau répertoire)
      • ln -s /usr/java/jdk1.3.1_01 /usr/java/java (pour ne pas avoir à se rappeler le nom exact du JDK)
      • chown -R root:root /usr/java (pour que tout les fichiers du JDK appartiennent à root)

  • option 2) RedHat RPM shell script
    • Le RPM va simplement se décompresser dans le repertoire courant avec jdk-1.3.1_01.i386.rpm comme nom.
    • Il faudra alors utiliser la commande rpm -i pour l'installer, tout en étant root
      • rpm -i jdk-1.3.1_01.i386.rpm
    • ce qui installera le jdk dans le repertoire /usr/java/jdk-1.3.1_0,1 il ne reste plus qu'a faire le lien
      • ln -s /usr/java/jdk1.3.1_01 /usr/java/java
    • pour se simplifier la vie.

  • Pour vérifier que tout marche bien il suffit de taper:
      • /usr/java/java/bin/java -version
    • et voir aparaître un message:
      
      java version "1.3.1_01" Java(TM) 2 Runtime 
      Environment, Standard Edition (build 1.3.1_01) Java HotSpot(TM) Client VM 
      (build 1.3.1_01, mixed mode)

Tomcat

Tomcat est un serveur applicatif JAVA, il permet d'executer des servlets et des JSP. C'est également un serveur web qui support le ssl, les virtuals host, les cgi, etc. Mais sa spécialité reste les servlets et les JSP. La configuration la plus souple et la mieux adaptée à une configuration où fonctionne déjà un serveur http apache est probablement de cantoner Tomcat à servir les servlets/JSP et à laisser apache faire le reste.
Pour ce faire, on va configurer Tomcat en supprimant l'option HTTP et on va rajouter le module mod_webapp à apache. Apache recevra ainsi toutes les requetes HTTP et redirigera de manière transparente les requetes destinées à Tomcat.
Pour installer Tomcat il suffit de récuperer le tar.gz correspondant sur le site du projet (par exemple avec un wget) puis de faire un

      • tar zxvf jakarta-tomcat-4.0.1.tar.gz

pour décompresser tomcat dans le repertoire jakarta-tomcat-4.0.1, et hop tomcat est installé.
Maintenant on appelle TOMCAT_HOME le repertoire jakarta-tomcat-4.0.1.
Le script de démarrage s'attend à avoir la variable JAVA_HOME positionnée sur l'endroit où vous avez installé java. Il y a au moins trois solution alternatives:

  • 1) éditer votre .bash_profile et rajouterla ligne
      • JAVA_HOME=/usr/java/java; export JAVA_HOME
  • 2) éditer votre /etc/profile (comme ca tout le monde en profite)
      • JAVA_HOME=/usr/java/java;export JAVA_HOME
  • 3) éditer le script $TOMCAT_HOME/bin/catalina.sh et rajouter la ligne
      • JAVA_HOME=/usr/java/java

bref de manière à faire en sorte que le script de démarrage sache où trouver JAVA. Maintenant pour tester que Tomcat fonctionne on tape:

      • $TOMCAT_HOME/bin/startup.sh

en esperant qu'aucun port utilisés par les parametres de base ne soit déjà utilisé:

  • 8005: port d'administration du serveur Tomcat
  • 8080: port du serveur HTTP
  • 8008: port du connecteur pour apache

pour changer un des ces port il suffit d'éditer le fichier $TOMCAT_ROOT\conf\server.xml et de changer les valeurs correspondates.

Si tout va bien, vous devriez voir tomcat démarrer. c'est à dire voir apparaitre des messages du type


  Guessing CATALINA_HOME from catalina.sh to ./bin/.. 
  Setting CATALINA_HOME to ./bin/.. 
  Using CLASSPATH: ./bin/../bin/bootstrap.jar:/usr/java/java/lib/tools.jar 
  Using CATALINA_BASE: ./bin/.. 
  Using CATALINA_HOME: ./bin/.. 
  Using JAVA_HOME:  /usr/java/java
mais surtout en faisant un
      • tail -f $TOMCAT_ROOT/logs/catalina.out
voir le message

  Starting service Tomcat-Standalone 
  Apache Tomcat/4.0.1 
  Starting service Tomcat-Apache 
  Apache Tomcat/4.0.1 
  
on peut également vérifier que ca fonctionne via une requete HTTP
  • curl -i http://monserveur:8080/ | less

Maintenant que ca marche, on va éliminer le composant serveur HTTP qui ne nous est pas utile, car c'est apache qui va servir le HTTP.
pour ca, il suffit d'éditer le fichier $TOMCAT_HOME/conf/server.xml est de supprimer la partie relative au composant HTTP.
Pour information, en xml, les commentaires sont semblables au HTML, ça commence avec <!-- pour finir par -->, mais on ne peut pas les imbriquer. Il faut donc supprimer de la ligne 16 à la ligne 291 (il ne reste plus grand chose). Avec vi sa donne:

  • vi +f +"16,291d" +"wq" $TOMCAT_HOME/conf/server.xml

mais rien ne vous empeche de le faire comme vous l'entendez...

Pour éteindre tomcat, il suffit de faire

      • $TOMCAT_HOME/bin/shutdown.sh

mod_webapp

Bon. Maintenant JAVA est en place, Tomcat est en place. Il ne reste plus qu'a brancher apache sur tomcat (via le port 8008). La première chose à vérifier est que votre serveur apache accepte les modules dynamiques: (APACHE_HOME designe le repertoire d'installation de votre apache). Si en faisant

  • $APACHE_HOME/bin/httpd -l

vous voyez mod_so.c dans la liste, c'est gagné! sinon il faut recompiler apache en activant mod_so. En effet, mod_webapp n'existe pas en version statique.
Il faut télécharger le module mod_webapp.so. Mais c'est une version compilée avec la glibc 2.2 pour un apache 1.3.x sans mod_ssl. Si votre version de linux ne permet pas d'utiliser cette version, ou si vous avez besoin de mod_ssl, il faut recompiler ce module c'est une opération assez douloureuse, car il faut recompiler apr (une librairie apache pour gérer les url) qui n'est pas complétement finalisée. Bref pour vous simplifier la vie, j'ai un mod_webapp compilé contre la glibc-2.1 pour apache 1.3.x sans mod_ssl que vous pouvez télécharger. Si vous avez la glibc-2.2 vous devez utiliser la version fournit par tomcat qui fonctionne très bien. Ou, vous pouvez encore vous la compiler vous-même. Oui, c'est faisable ;)

La nouvelle version du connecteur webapp (4.0.2 beta2) est beaucoup plus facile à compiler:
wget http://jakarta.apache.org/builds/jakarta-tomcat-4.0/ \   release/v4.0.2-b2/src/webapp-module-1.0.2-tc402-src.tar.gz
tar zxvf webapp-module-1.0.2-tc402-src.tar.gz
cd webapp-module-1.0.2-tc402/
./support/buildconf.sh
./configure --with-apxs
cp apache-1.3/mod_webapp.so $APACHE_HOME\libexec
Donc une fois que fous avez en votre possesion un mod_webapp.so qui fonctionne avec votre système, il faut le copier dans le repertoire $APACHE_HOME\libexec. (ou dans $APACHE_HOME\modules selon les cas).

On va ensuite modifier $APACHE_HOME\conf\httpd.conf pour prendre en compte ce nouveau module de la manière suivante:

  • On cherche la chaine LoadModule
  • il faut placer la ligne suivante après le dernier LoadModule (peut etre n'avez vous aucun LoadModule, ce n'est pas grave, mais il faut quand meme rajouter la ligne suivante)
    • LoadModule webapp_module libexec\mod_webapp.so
    • (ou LoadModule webapp_module modules\mod_webapp.so en fonction de votre configuration.
  • Puis rajouter AddModule mod_webapp.c à la fin de la liste des AddModule
  • Puis rajouter dans le vhost où vous voulez faire un le lien avec tomcat vhost sera désigné par VHOST
    • WebAppConnection MaConnexion warp localhost:8008
    • WebAppDeploy examples MaConnexion /UnExample
    • WebAppInfo /webapp-info

La premiere ligne définit une connexion qui s'appelle MaConnexion vers votre tomcat qui ecoute sur le port 8008.
La deuxième ligne définit le mapping entre l'url http://VHOST/UnExample/ et la webapp examples qui existe dans Tomcat.
La troisième ligne est optionnelle et sert a obtenir des infos sur le connecteur mod_webapp via l'URL http://VHOST/webapp-info/.

Il faut maintenant relancer apache, mais avant ça, il faut vérifier qu'on n'a pas trop de bétise avec un configtest:

      • $APACHE_HOME/bin/apachectl configtest

Si la réponse est Syntax OK, alors on peut le relancer avec

      • $APACHE_HOME/bin/apachectl restart

Pour vérifier que tout a bien marché, tester avec l'URL http://VHOST/UnExample/

Voilà, le pense qu'avec tout ça il y a de quoi mettre en place un hébergement de servlest/JSP. Bien sur, dans l'idéal chaque client à son Tomcat avec ses webapp et ses connexions. Mais plein de JVM consomment plein de mémoire, et il vaut mieux se contenter d'avoir un seul Tomcat avec plein de webapp.

bon courage!


Des erreurs? des commentaires? des Questions? merci de me les communiquer. Cette page a été vue 10004 fois.