Installer et configurer Tomcat

Introduction

Tomcat est un serveur d'applications développé en Open Source et qui implémente les technologies des Servlets et des JSP (Java Server Page). Les spécifications de ces technologies sont définies par SUN et sont rigoureusement respectées par Tomcat. Depuis la version 5.0, Tomcat implémente les spécifications 2.4 des Servlets et 2.0 des JSP.

La technologie des Servlets consiste à exécuter sur un site web du code Java précompilé. La servlet est écrite en Java avant d'être compilé puis placée dans un contexte d'exécution de Tomcat.

La technologie des JSP consiste à écrire des scripts qui seront interprétés par Tomcat afin de créer des sites dynamiques. Cette méthode est comparable au PHP ou à l'ASP. Dans la pratique, Tomcat compile automatiquement la page JSP en Servlet au premier appel avant de l'exécuter. Les appels suivants sont donc beaucoup lus rapide car Tomcat réutilise la Servlet obtenue.

Dans les deux cas, il s'agit bien d'une exécution côté serveur, tout dépend de votre serveur dédié et rien d'autre n'est nécessaire du côté du client pour visionner un site géré par Tomcat. L'ensemble d'un site web composé de servlets, de JSP et éventuellement de pages HTML et d'images, est appelé une webapp. Chaque webapp est définie par un contexte d'exécution et peut être compressée dans une archive unique, facilitant ainsi le déploiement d'applications complexes sous Tomcat.


Installation

Le serveur Tomcat est écrit en Java. Pour le faire fonctionner, nous allons commencer par installer la machine virtuelle de SUN. Le JDK de SUN n'est pas la seule alternative pour lancer du code précompilé Java sous Linux mais tant qu'à installer des choses, autant tout faire d'un coup :).


  • Installation du kit de développement Java

Télécharger la version 1.4.2 de J2SE SDK depuis le site officiel de SUN : http://java.sun.com/j2se/1.4.2/download.html et placez-la sur votre serveur dédié dans /home/ovh/src/soft/.


Nous allons décompresser l'archive récupérée pour obtenir le paquet RPM installable :

[root@julien soft]# sh j2sdk-1_4_2_04-linux-i586-rpm.bin



Appuyez plusieurs fois sur la barre d'espace puis taper yes pour accepter les conditions d'utilisation.
Le paquet RPM est maintenant prêt à être installé :

[root@julien soft]# rpm -ivh j2sdk-1_4_2_04-linux-i586.rpm



Nous allons créer un lien symbolique pour retrouver le répertoire racine de Java plus facilement :

ln -s /usr/java/j2sdk1.4.2_04/ /usr/local/java



Puis créer les liens vers les principaux binaires de Java :

ln -s /usr/local/java/bin/java /usr/bin/java
ln -s /usr/local/java/bin/javac /usr/bin/javac
ln -s /usr/local/java/bin/javadoc /usr/bin/javadoc
ln -s /usr/local/java/bin/jar /usr/bin/jar



Un petit test pour vérifier que tout va bien :

[root@julien soft]# java -version
java version "1.4.2_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)
Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode)


Parfait, nous pouvons passer à l'installation de Tomcat :).


  • Installation de Tomcat

Pour éviter les complications, nous allons utiliser une version binaire de Tomcat. Comme mentionné plus haut, Tomcat est écrit en Java, ce qui permet d'exécuter sur une machine du code qui a été précompilé sur une autre machine. Vous pouvez donc récupérer la version déjà précompilée et la lancer sur votre propre serveur dédié, quelles que soient les versions des librairies qui y sont installées, c'est le gros avantage de Java :). À l'heure actuelle, la dernière version stable de Tomcat est la 5.0.25. Nous allons donc commencer par récupérer cette version dans /home/ovh/src/soft/ :




Puis l'installer dans /usr/share/ :

cd /usr/share/
tar xvfz /home/ovh/src/jakarta-tomcat-5.0.25.tar.gz
mv jakarta-tomcat-5.0.25 tomcat



À cet instant, Tomcat est installé dans le répertoire /usr/share/tomcat/, nous pouvons le tester :).


Premier démarrage

Pour se lancer, Tomcat n'a besoin que de connaître le répertoire de base de notre machine virtuelle Java, les scripts fournis avec la distribution binaire se chargent du reste.

Pour notre premier test, nous allons donc exécuter les commandes suivantes :

cd /usr/share/tomcat/bin/
export JAVA_HOME=/usr/local/java
sh startup.sh



Tomcat utilise le port 8080 pour accepter les connexions, vérifions que le serveur est bien lancé :

[root@julien bin]# netstat -tanpu | grep ":8080"
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 13688/java



Si tout va bien, vous pouvez accéder à la page d'accueil de votre serveur Tomcat à cette adresse :
http://nsXXXX.ovh.net:8080/.

Si vous protégez votre serveur avec un firewall (voir le guide FireWall), il vous faut autoriser les connexions entrantes sur le port 8080. Pour cela, ajoutez cette ligne dans votre firewall :

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT



Des exemples de servlets et de JSP (ainsi que leur code source) sont accessibles à ces adresses :
http://nsXXXX.ovh.net:8080/jsp-examples/
http://nsXXXX.ovh.net:8080/servlets-examples/

Ces exemples font partie de deux webapps fournies avec la distribution de Tomcat. Elles se trouvent dans le répertoire /usr/share/tomcat/webapps/

Pour stopper le serveur après ce test, vous pouvez exécuter ces commandes :

cd /usr/share/tomcat/bin/
sh shutdown.sh



Les logs de Tomcat sont par défaut dans le fichier /usr/share/tomcat/logs/catalina.out


Lancer Tomcat au démarrage du serveur

Pour bien finir l'installation, nous allons ajouter un daemon pour Tomcat et le configurer pour qu'il se lance au démarrage du serveur. Commençons par créer l'utilisateur qui va lancer le daemon de Tomcat. Nous allons créer l'utilisateur tomcat dans le groupe nobody, aucune ouverture de session ne lui sera permise :

[root@julien /]# /usr/sbin/useradd -g nobody -d /usr/share/tomcat -s /bin/false tomcat



Puis, nous allons créer le daemon en lui même :

[root@julien /]# more /etc/init.d/tomcat

#!/bin/sh

# description: Script de démarrage de Tomcat
# chkconfig: 2345 90 20

. /etc/rc.d/init.d/functions

RETVAL=0
prog="Tomcat"

DESC="Tomcat 5.0.25"
CATALINA_HOME=/usr/share/tomcat
TOMCAT_BIN=$CATALINA_HOME/bin/catalina.sh
TOMCAT_USER=tomcat
JAVA_HOME=/usr/local/java

export CATALINA_HOME JAVA_HOME

case "$1" in
start)
echo -n "Démarrage de $DESC avec la JVM $JAVA_HOME: "
su -p -s /bin/sh $TOMCAT_USER $TOMCAT_BIN start >/dev/null 2>&1 &
RETVAL=$?
[ $RETVAL -ne 0 ] && failure $"$prog startup"
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/tomcat && success $"$prog startup"
echo
;;

stop)
echo -n "Arrêt de $DESC: "
su -p -s /bin/sh $TOMCAT_USER $TOMCAT_BIN stop >/dev/null 2>&1 &
RETVAL=$?
[ $RETVAL -ne 0 ] && failure $"$prog shutdown"
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/tomcat && success $"$prog shutdown"
echo
;;

restart)
$0 stop
sleep 5
$0 start
;;

*)
echo "Utilisation: /etc/init.d/tomcat {start|stop|restart}" >&2
exit 2
;;
esac



Modifions les permissions sur notre deamon :

[root@julien /]# chmod 755 /etc/init.d/tomcat


ainsi que sur certains répertoires de Tomcat :

[root@julien /]# chown -R tomcat /usr/share/tomcat/conf/
[root@julien /]# chown -R tomcat /usr/share/tomcat/work/
[root@julien /]# chown -R tomcat /usr/share/tomcat/temp/



Il ne reste plus qu'à ajouter le daemon au démarrage du serveur :

[root@julien /]# /sbin/chkconfig --add tomcat



Puis redémarrer le serveur et vérifier que tout est OK :).

[root@julien /]# ps -ef
[....]
tomcat 8148 20425 0 01:42 ? 00:00:00 /usr/local/java/bin/java
tomcat 15007 20425 0 01:42 ? 00:00:00 /usr/local/java/bin/java
tomcat 7861 20425 0 01:42 ? 00:00:00 /usr/local/java/bin/java
tomcat 28518 20425 0 01:42 ? 00:00:00 /usr/local/java/bin/java
tomcat 32610 20425 0 01:42 ? 00:00:00 /usr/local/java/bin/java
tomcat 27454 20425 0 01:42 ? 00:00:00 /usr/local/java/bin/java
[....]




Autres guides

ModJk :: installer et configurer le module qui permet l'interfaçage entre Apache et Tomcat.


Liens

Le site officiel de Tomcat : http://jakarta.apache.org/tomcat/index.html.