Apache Tomcat

Apache Tomcat est un conteneur vous permettant de fournir des Servlets Java et des applications Web JSP (Java Server Pages).

Ubuntu possède des paquets pour Tomcat 6 et 7. Tomcat 6 est la version historique et Tomcat 7 la version courante où les nouvelles fonctions sont implémentées. Les deux sont considérées comme stables. Ce guide va se concentrer sur Tomcat 7 mais la plupart des détails de configurations sont valides pour les deux versions.

Les paquets Tomcat d'Ubuntu permettent deux types de fonctionnement pour tomcat. Vous pouvez les installer comme une instance unique pour l'ensemble du système, qui sera lancée au démarrage du système et fonctionnera avec les droits de l'utilisateur sans privilèges tomcat7 (ou tomcat6). Mais vous pouvez aussi déployer des instances privées, exécutées avec vos propres droits d'utilisateur, et que vous devrez démarrer et arrêter par vous-même. Cette deuxième possibilité est particulièrement utile dans un contexte de serveur de développement où plusieurs utilisateurs peuvent réaliser des tests sur leurs propres instances privées de Tomcat.

Installation pour tout le système

Pour installer le serveur Tomcat, vous pouvez entrer la commande suivante dans l'invite de terminal:

sudo apt-get install tomcat7

Cela installera un serveur Tomcat avec par défaut une application Web qui affichera la page minimale "it works".

Configuration

Les fichiers de configuration de Tomcat se trouvent dans /etc/tomcat7. Seulement quelques ajustements courants de configuration seront décrits ici, veuillez voir la documentation Tomcat 7.0 pour plus de détails.

Modification des ports par défaut

Par défaut, Tomcat exécute un connecteur HTTP sur le port 8080 et un connecteur AJP (protocole Apache Jserv) sur le port 8009. Vous devrez peut-être changer ces ports par défaut pour éviter des conflits avec d'autres applications du système. Ceci est effectué en changeant les lignes suivantes dans /etc/tomcat7/server.xml :

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
...
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Modification de la machine virtuelle Java utilisée

Par défaut, Tomcat se lancera de préférence avec les JVM OpenJDK, puis essayera les JVM Sun, et enfin d'autres JVM. Vous pouvez forcer Tomcat à utiliser une JVM spécifique en définissant JAVA_HOME dans /etc/default/tomcat7

JAVA_HOME=/usr/lib/jvm/java-6-sun

Déclaration des utilisateurs et des rôles

Noms d'utilisateurs, mots de passes et rôles (groupes) peuvent être définis dans un contenant Servlet. Ceci est accompli dans le fichier /etc/tomcat7/tomcat-users.xml :

<role rolename="admin"/>
<user username="tomcat" password="s3cret" roles="admin"/>

Utilisations des applications Web standard de Tomcat

Tomcat est fourni avec des applications Web que vous pouvez installer pour la documentation, l'administration ou pour des démonstrations.

Documentation Tomcat

Le paquet tomcat7-docs contient la documentation Tomcat qui est empaquetée comme une application web dans laquelle vous pouvez accéder par défaut à l’adresse http://VotreServeur:8080/docs. Vous pouvez l'installer en saisissant la commande suivante dans un terminal :

sudo apt-get install tomcat7-docs

Les applications Web d'administration pour Tomcat

Le paquet tomcat7-admin contient deux applications web qui peuvent être utilisées pour administrer le serveur Tomcat à l'aide d'une interface web. Vous pouvez installer ces applications web en saisissant la commande suivante dans un terminal :

sudo apt-get install tomcat7-admin

La première application Web est manager. Vous pouvez y accéder par défaut sur http://yourserver:8080/manager/html. Elle est principalement utilisée pour obtenir les statuts du serveur et redémarrer les applications Web.

L’accès à l'application de gestion est protégé par defaut : vous devez définir un utilisateur avec le rôle « manager-gui » dans /etc/tomcat7/tomcat-users.xml avant de pouvoir y accéder.

La seconde application Web host-manager. Vous pouvez y accéder par défaut sur http://yourserver:8080/host-manager/html. Elle peut être utilisée pour créer dynamiquement des hôtes virtuels.

L’accès à l'application de gestion de l’hôte est également protégé par défaut : vous devez définir un utilisateur avec le rôle « admin-gui » dans /etc/tomcat7/tomcat-users.xml avant de pouvoir y accéder.

Pour des raisons de sécurité, par défaut l'utilisateur tomcat7 ne peut pas écrire dans le répertoire /etc/tomcat7. Certaines fonctionnalités dans l'administration des applications web (déploiement d'application, création d’hôte virtuel) ont besoin d'avoir accès en écriture à ce répertoire. Si vous voulez utiliser ces fonctionnalités, exécutez la commande suivante pour donner les droits nécessaires aux utilisateurs du groupe tomcat7 :

sudo chgrp -R tomcat7 /etc/tomcat7
sudo chmod -R g+w /etc/tomcat7 

Exemples d'applications Web Tomcat

Le paquet tomcat7-examples contient deux applications web qui peuvent être utilisées pour tester ou présenter les fonctionnalités de Servlet et de JSP, et accessibles à l'adresse par défaut http://yourserver:8080/examples. Vous pouvez les installer en entrant la commande suivante dans un terminal :

sudo apt-get install tomcat7-examples

Utilisation des instances privées

Tomcat est largement utilisé pour des besoins de développement et de test où utiliser une seule instance accessible par tout le système ne peux pas répondre aux exigences de plusieurs utilisateurs sur un seul système. Les paquets de Tomcat dans Ubuntu fournissent des outils pour vous aider à déployer vos propres instances utilisateur, et permettent à chaque utilisateur d'un système de lancer (sans les droits root) des instances privées distinctes tout en utilisant les bibliothèques installées sur le système.

Il est possible de lancer les instances système et privée en parallèle, du moment qu'elles n'utilisent pas les mêmes ports TCP.

Installation de la gestion des instances privées

Vous pouvez installer tout ce qui est nécessaire pour lancer une instance privée en saisissant la commande suivante dans un terminal :

sudo apt-get install tomcat7-user

Création d'une instance privée

Vous pouvez créer un répertoire d'instance privée en saisissant la commande suivant dans un terminal :

tomcat7-instance-create mon-instance

Cela créera un nouveau dossier my-instance avec les sous-dossiers et scripts nécessaires. Vous pouvez par exemple installer vos bibliothèques communes dans le sous-dossier lib/ et déployer votre application dans le sous-dossier webapps/. Par défaut, aucune application Web n'est déployée.

Configuration de votre instance privée

Vous trouverez les fichiers de configuration de Tomcat pour votre instance privée dans le sous-dossier conf/. Vous devrez certainement par exemple modifier le fichier conf/server.xml pour changer les ports par défaut utilisés par votre instance privée Tomcat pour éviter les conflits avec d'autres instances actives.

Démarrage/arrêt de votre instance privée

Vous pouvez lancer votre instance privée en saisissant la commande suivante dans un terminal (en supposant qu'elle se trouve dans le répertoire my-instance) :

my-instance/bin/startup.sh

Vous devez vérifier si il y a des erreurs dans le sous-dossier logs/. Si vous avez l'erreur java.net.BindException: Address already in use<null>:8080, cela veut dire que le port que vous utilisez est déjà pris et que vous devez le changer.

Vous pouvez arrêter votre instance en saisissant la commande suivante dans le terminal (en supposant qu'elle se trouve dans le répertoire my-instance) :

my-instance/bin/shutdown.sh

Références