Le Guide d'installation de Tomcat pour Linux
URL de référence : http://www.apachefrance.com/Articles/6/
Introduction
Après le guide
d'installation de Tomcat pour Windows, voici le guide d'installation de
Tomcat pour Linux.
Celui-ci n'est pas de mon cru, mais l'oeuvre de Patrick
Roumanoff, gérant depuis 1999 de Patrick Roumanoff Conseil, société
spécialisée dans l'intégration des nouvelles technologies
au sein de l'entreprise. C'est donc à lui que revient tout le crédit
de cet article.
Patrick nous propose un article permettant l'installation de Tomcat 4.0.1 sur
une machine Linux, ainsi que l'intégration Apache/Tomcat par l'intermédiaire
du module web_app.
| 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:
Installation de 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
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
Intégration avec Apache
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/
Conclusion
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 ou
de poster un message sur le forum Tomcat
d'Apache France.
© 2001 Patrick Roumanoff Consulting, http://roumanoff.com/
|