|
Installation de Tomcat
|
Prérequis: |
ce qu'on va rajouter:
|
...et on va tout brancher ensemble. |
on peut téléchérger deux version pour Linux, une version RedHat RPM shell script et une version GNUZIP Tar shell script.
chmod u+x ./j2sdk-1_3_1_01-linux-i386.bin
./j2sdk-1_3_1_01-linux-i386.bin
jdk1.3.1_01
.
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) jdk-1.3.1_01.i386.rpm
comme nom.rpm -i jdk-1.3.1_01.i386.rpm
ln -s /usr/java/jdk1.3.1_01 /usr/java/java
/usr/java/java/bin/java -version
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 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:
JAVA_HOME=/usr/java/java; export JAVA_HOME
JAVA_HOME=/usr/java/java;export JAVA_HOME
$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é:
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
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
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: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
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
$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:
LoadModule
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
LoadModule webapp_module modules\mod_webapp.so
en fonction de votre configuration.AddModule mod_webapp.c
à la fin de la liste des
AddModule
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!