Informatique : Documentations

 

Installer Tomcat 5.0.28 sur GNU/Linux



Préambule:

Tomcat est le serveur applicatif Java du projet jakarta (sous projet d'apache). Il permet d'éxécuter des applications web écrites en java (jsp, servlet...). Il est sous licence apache et est donc libre. Pour lire ce document, vous devez connaitre tout ce qu'est java, jdk, jsp et tout le tralala car je ne l'explique pas. L'objectif est de retrouver rapidement sous la main les étapes d'installation de tomcat et du mod_jk. Cette doc est donc loin d'être exhaustive. Vous pouvez améliorer celà en contribuant à ce document. J'ajouterai avec plaisir vos modifications / ajouts.


Auteur:

Sébastien CORBEAU


Licence:

Copyright (c) 2003-2013 Sébastien CORBEAU
Vous pouvez librement copier, distribuer et/ou modifier ce document selon les termes de la Licence de Documentation Libre GNU (GNU Free Documentation License), version 1.1 ou toute version ultérieure publiée par la Free Software Foundation.
La GNU Free Documentation License (en anglais)
Traduction en français de la FDL (IDEALX)


Historique:

15/02/2005 - Mise à jour avec le paramètre LC_ALL dans le fichier de démarrage - v1.3.1
07/02/2005 - Mise à jour pour la version tomcat 5.0.28 - v1.3
04/12/2003 - Mise à jour pour la version tomcat 4.1.29 - v1.2
13/08/2003 - Mise à jour pour la nouvelle version tomcat 4.1.27 - v1.1
25/03/2003 - Première version publique - v1.0




I - Installation d'un JDK


Après avoir longtemps utilisé le jdk d'ibm disponible ici (enregistrement obligatoire), j'utilise maintenant le jdk 1.4.2 de Sun.
Choisissez "Download J2SE SDK", puis "Linux Platform; self-extracting file".

cd /usr/local/src
chmod +x j2sdk-1_4_2_07-linux-i586.bin
./j2sdk-1_4_2_07-linux-i586.bin
mv j2sdk1.4.2_07/ /usr/local
cd /usr/local
ln -s j2sdk1.4.2_07/ jdk

Testons:

jdk/bin/java
Usage: java [-options] class [args...]

Ca fonctionne !


II - Installer tomcat


1- Déploiement

Vous pouvez trouver un autre mirroir à cette adresse http://jakarta.apache.org/site/binindex.cgi#tomcat.

cd /usr/local/src
wget http://mir2.ovh.net/ftp.apache.org/dist/jakarta/tomcat-5/v5.0.28/bin/jakarta-tomcat-5.0.28.tar.gz
tar -xzf jakarta-tomcat-5.0.28.tar.gz -C /usr/local
cd /usr/local
ln -s jakarta-tomcat-5.0.28/ tomcat

2- Configuration

Faire fonctionner tomcat en utilisateur 'root' n'est pas une bonne idée. Créez un utilisateur tomcat et attribuez lui le répertoire /usr/local/tomcat

groupadd tomcat
useradd -g tomcat -d /usr/local/tomcat tomcat
chown -R tomcat:tomcat jakarta-tomcat-5.0.28/
chmod 770 jakarta-tomcat-5.0.28/

Voici le script de démarrage / arrêt qui s'appelle /etc/init.d/tomcat (notez le "/bin/su" pour faire tourner tomcat sous un autre utilisateur que celui qui le lance):

#! /bin/bash
#
# tomcat   Start the tomcat server.
#

NAME="Jakarta Tomcat 5.0.28"
TOMCAT_HOME=/usr/local/tomcat
CATALINA_HOME=/usr/local/tomcat
JAVA_HOME=/usr/local/jdk
CATALINA_OPTS="-Dfile.encoding=iso8859-1"
TOMCAT_USER=tomcat
LC_ALL=fr_FR
export TOMCAT_HOME CATALINA_HOME JAVA_HOME CATALINA_OPTS TOMCAT_USER LC_ALL
cd $TOMCAT_HOME/logs
case "$1" in
  start)
    echo -ne "Starting $NAME.\n"
    /bin/su $TOMCAT_USER $TOMCAT_HOME/bin/startup.sh
    ;;

  stop)
    echo -ne "Stopping $NAME.\n"
    /bin/su $TOMCAT_USER $TOMCAT_HOME/bin/shutdown.sh
    ;;

  *)
    echo "Usage: /etc/init.d/tomcat {start|stop}"
    exit 1
    ;;
esac

exit 0

Note: en fonction des serveurs, vous pouvez avoir des problèmes avec les caractères accentués dans les jsp. Les paramètres CATALINA_OPTS et LC_ALL sont présents afin de résoudre ces problèmes. Sur Debian, j'ai également fait un dpkg-reconfigure locales en sélectionnant en_US.ISO-8859-1, fr_FR.ISO-8859-1, fr_FR.UTF-8 et fr_FR.ISO-8859-15@euro. Mettez fr_FR par défaut

Rendons le fichier éxécutable:

chmod 700 /etc/init.d/tomcat

et démarrez tomcat:

/etc/init.d/tomcat start
Starting Jakarta Tomcat 5.0.28.
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JAVA_HOME:       /usr/local/jdk

Testez http://localhost:8080 pour vérifier que cela fonctionne.
Pour arrêter tomcat:

/etc/init.d/tomcat stop

Si vous avez beaucoup d'applications et / ou une machine lente, le démarrage et l'arrêt de tomcat peuvent prendre plusieurs minutes.
Nous allons également faire démarrer tomcat en même temps que la machine. Sous Debian GNU/Linux:

update-rc.d tomcat defaults 50

III - Interaction Apache / Tomcat


1- Ckoidon?

Tomcat est capable de gérer les requêtes statiques, les images et les pages web par exemple. Seulement, son boulot, c'est le java, il n'est pas optimisé pour le statique. Que faire alors? Et bien, nous allons utiliser apache ! Pour être plus exact, apache prend toutes les requêtes mais il déléguera certaines (selon la config) à tomcat. Pour qu'il puisse déléguer à tomcat, il lui faut un module spécifique. C'est là qu'entre en jeu le connecteur mod_jk.


2- Compilation du connecteur

Il faut installer le paquet apache-dev pour avoir l'éxécutable /usr/bin/apxs. Ce dernier permet de compiler des modules pour apache.
Sous debian:

apt-get install apache-dev

Récupérez les sources du module sur un mirroir du site apache. Par exemple, sur le mirroir OVH:

cd /usr/local/src
wget jakarta-tomcat-connectors-1.2.8-src.tar.gz

Nous allons donc décompresser et compiler:

tar -xzf jakarta-tomcat-connectors-1.2.8-src.tar.gz
cd jakarta-tomcat-connectors-1.2.8-src/jk/native
./configure --with-apxs=/usr/bin/apxs
make
cp apache-1.3/mod_jk.so.0.0.0 /usr/lib/apache/1.3/mod_jk.so

Si vous rencontrez cette erreur:

make[1]: Leaving directory `/usr/local/src/jakarta-tomcat-connectors-jk-1.2.8-src/jk/native/common'
/bin/sh: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 :
 No such file or directory
make[1]: *** [jk_ajp12_worker.lo] Error 127
make: *** [all-recursive] Error 1

Installez quelques outils:

apt-get install libtool automake make mtools

Puis configure, make et cp.

C'est prêt. Il reste à modifier les fichiers de configuration.


3- Configurer apache et tomcat ensemble

Il faut charger le module. Dans httpd.conf:

LoadModule jk_module /usr/lib/apache/1.3/mod_jk.so

# Conf mod_jk tomcat
JkWorkersFile /etc/apache/workers.properties
JkLogFile /usr/local/tomcat/logs/mod_jk.log
JkLogLevel warn

Rajoutez le fichier /etc/apache/workers.properties:

workers.tomcat_home=/usr/local/tomcat
workers.java_home=$(JAVA_HOME)
ps=/

worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300

Le module est chargé et configuré. Nous allons dire à apache de déléguer certaines requêtes à tomcat grâce à la directive JkMount (toujours dans le fichier httpd.conf):

NameVirtualHost xx.xx.xx.xx

<VirtualHost xx.xx.xx.xx>
		ServerName monserveur.com
		DocumentRoot /home/web/htdocs
		JkMount /jsp-examples/* worker1
		JkMount /*.jsp worker1
		DirectoryIndex index.html index.jsp
</VirtualHost>

Redémarrez apache puis testez http://localhost/jsp-examples/. Essayez quelques exemples, normalement, c'est bon :).
Si tout est ok, nous pouvons purger le fichier de config de tomcat et enlever les exemples. Voici un exemple pour un tomcat avec une seule webapp "monappli":


<Server port="8005" shutdown="SHUTDOWN" debug="0">

<Service name="Catalina">
  <!-- facultatif, utile pour les tests -->
  <Connector port="8080" URIEncoding="UTF-8" />

  <Connector port="8009" URIEncoding="UTF-8" protocol="AJP/1.3" />

  <Engine name="Catalina" defaultHost="localhost">
    <Logger className="org.apache.catalina.logger.FileLogger" />
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
    <Host name="localhost" appBase="webapps">
      <Context path="/monappli" docBase="monappli" debug="0" reloadable="false" />
    </Host>
  </Engine>
</Service>

</Server>

Redémarrez tomcat à nouveau pour prendre en compte les changements, rajoutez un JkMount dans le httpd.conf et redémarrez apache.


IV - Conclusion + ressources


Voici quelques ressources pour compléter ce document:
* Le site de tomcat
* Installer tomcat 4 avec le mod_jk pour apache

Voilà! Si vous voyez des erreurs dans ce document, n'hésitez pas à m'en faire part.
Bonne installation.






Généré par POFL - Aucune garantie n'est apportée aux informations du site. Sauf mention contraire, vous êtes libre de copier ce site tant que vous en indiquez la provenance.