Tomcat est un serveur d’applications Java. Les applications qu’il héberge et exécute sont donc écrites en Java et exploitables depuis une interface Web. Il peut être considéré comme un serveur Web de ce fait.

Ce tutoriel explique comment installer et configurer un serveur Tomcat 9.0.0 sous Debian 7.11.0. Si vous utilisez une version de Debian différente il pourrait y avoir quelques divergences de paramétrage.

Toutes les manipulations à venir seront à effectuer en tant que super-utilisateur.


Installation de Tomcat

Mettre à jour la distribution

Exécutez la commande suivante :

apt-get update -y && apt-get upgrade -y

Cette commande permet de mettre à jour la liste des paquets de Debian et de mettre à jour les paquets installés sur votre système Debian.

Installer Oracle Java 8

Java 8 n’est pas disponible dans les dépôts Wheezy de Debian. Nous allons donc utiliser le référentiel WebUpd8 Java PPA pour pouvoir l’installer.

Ajoutez le référentiel WebUpd8 Oracle Java PPA à l’aide des commandes suivantes :

echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886

Mettez à jour la liste des paquets de Debian :

apt-get update

Installez java 8 :

apt-get install oracle-java8-installer

Acceptez les termes de la licence Oracle Binary Code dès qu’il vous le sera demandé.

Installer Tomcat

Placez-vous dans le dossier /opt/ et Téléchargez le fichier apache-tomcat-9.0.0.M15.tar.gz :

cd /opt/ && wget http://mirror.symnds.com/software/Apache/tomcat/tomcat-9/v9.0.0.M19/bin/apache-tomcat-9.0.0.M19.tar.gz

Attention, l’adresse du lien peut changer entre temps. Si le lien ci-dessus n’est plus correct, rendez-vous directement sur le site pour rechercher le nouveau lien ;

Décompressez le fichier apache-tomcat-9.0.0.M19.tar.gz :

tar xzf /opt/apache-tomcat-9.0.0.M19.tar.gz

Renommez le dossier décompressé en tomcat9 :

mv /opt/apache-tomcat-9.0.0.M19 /opt/tomcat9 

Le chemin vers le dossier de Tomcat sera /opt/tomcat9/ ;

Supprimez le fichier apache-tomcat-9.0.0.M19.tar.gz :

rm /opt/apache-tomcat-9.0.0.M19.tar.gz

Configuration de Java

Configurer les variables d’environnement

En informatique, les variables d’environnement sont des variables dynamiques utilisées par les différents processus dans un système. Elles permettent de communiquer des informations entre des programmes qui ne communiquent pas directement en entre eux, et ont donc besoin d’un accord pour se communiquer mutuellement leurs choix.

Source : https://fr.wikipedia.org/wiki/Variable_d%27environnement

La variable d’environnement qui va surtout nous intéresser est CATALINA_HOME. Elle permet de définir le chemin vers le répertoire de Tomcat (ici tomcat9).

Néanmoins, certaines commandes telles que startup.sh ou catalina.sh ne peuvent ne pas fonctionner si vous ne définissez pas correctement les variables d’environnement Java.

Nous avons donc besoin de 2 variables supplémentaires :

  1. La variable JAVA_HOME qui est obligatoire de définir si Java est installé sur la machine correspondante. Elle indique le répertoire contenant l’arborescence des fichiers nécessaires pour la machine virtuelle Java (classe, bibliothèques logicielles, etc…) ;
  2. La variable JRE_HOME qui définit l’emplacement de l’environnement d’exécution Java.

Les 3 variables seront stockées dans le fichier /etc/environment.

Définissez la variable CATALINA_HOME :

echo "export CATALINA_HOME="/opt/tomcat9"" >> /etc/environment

Définissez la variable JAVA_HOME :

echo "export JAVA_HOME="/usr/lib/jvm/java-8-oracle"" >> /etc/environment

Définissez la variable JRE_HOME :

echo "export JRE_HOME="/usr/lib/jvm/java-8-oracle/jre"" >> /etc/environment

Ce ne sont que de simple echo dont ont redirige le résultat dans le fichier /etc/environment.

Rechargez le fichier de démarrage .bashrc :

source ~/.bashrc

Configuration de Java

Pour faciliter la gestion du serveur Tomcat, nous allons utiliser un service tomcat9 pour pouvoir démarrer, redémarrer ou arrêter automatiquement celui-ci. De plus, de cette manière le serveur Tomcat démarrera automatiquement au démarrage de la machine.

Configurer les droits sur le dossier tomcat9/

Il faut permettre à au futur service de pouvoir lire et exécuter automatiquement les scripts sh contenu dans le répertoire /opt/tomcat9/ si l’on veut qu’il soit démarrer, redémarrez ou arrêter automatiquement. Pour cela il faut configurer les droits de lecture et d’exécution sur l’arborescence du dossier /opt/tomcat9/.

Exécutez la commande suivante :

chmod -R 755 /opt/tomcat9/

Créer le service tomcat9

C’est dans le dossier /etc/init.d/ que sont stockés tous les services. Nous allons créer le service tomcat9 dans celui-ci.

Créez le script tomcat9 :

nano /etc/init.d/tomcat9

Insérez-y les lignes suivantes :

case $1 in
start)
sh /opt/tomcat9/bin/startup.sh
;;
stop)
sh /opt/tomcat9/bin/shutdown.sh
;;
restart)
sh /opt/tomcat9/bin/shutdown.sh
sh /opt/tomcat9/bin/startup.sh
;;
esac
exit 0

Enregistrez le script ;

Rendez le fichier exécutable :

chmod +x /etc/init.d/tomcat9

Activez le service tomcat9 :

update-rc.d tomcat9 defaults

Démarrez le service tomcat9 :

/etc/init.d/tomcat9 start

Vous pouvez maintenant accéder à Tomcat à l’adresse http://IPServeur:8080 mais, vous ne pouvez pas encore accéder aux fonctionnalités Server Status, Manager App et Host Manager ;

Si vous tentez maintenant d’accéder à ces services, vous recevrez l’erreur suivante :

403 Access Denied

Configuration de Tomcat

Créer des comptes utilisateurs Tomcat

Ces comptes vont permettre de sécuriser et d’accéder aux pages web administratives et de gestion de Tomcat. Pour cela nous allons directement les créer à dans le fichier /opt/tomcat9/conf/tomcat-users.xml.

Éditez le fichier tomcat-users.xml :

nano /opt/tomcat9/conf/tomcat-users.xml

Repérez les balises  <tomcat-users> </tomcat-users> ;

Ajoutez les lignes suivantes :

<!-- Rôles pour le gestionnaire d'application Tomcat -->

<!-- Accéder à l'interface graphique HTML et au status de Tomcat -->
<role rolename="manager-gui" />

<!-- Accéder à l'interface texte et au status de Tomcat -->
<role rolename="manager-script" />

<!-- Accéder au proxy JMX et au status de Tomcat -->
<role rolename="manager-jmx" />

<!-- Accéder et au status de Tomcat seulement -->
<role rolename="manager-status" />

<!-- Rôles pour le gestionnaire d'hôtes -->

<!-- Accéder à l'interface graphique HTML et au status de Tomcat -->
<role rolename="admin-gui" />

<!-- Accéder à l'interface texte et au status de Tomcat -->
<role rolename="admin-scripts" />

<!-- Gestionnaire ayant accès à Server Status & Manager App -->
<user username="manager" password="manager" roles="manager-gui" />

Maintenant que les sont définit, nous pouvons créer des utilisateurs à l’aide de la balise user de la manière suivante :

<user username="Nom_Utilisateur" password="Mot_De_Passe" roles="Rôle(s)" />

La balise user permet de définir un utilisateur, en lui donnant un nom/login (username), un mot de passe (password) qui peut être vide et une liste de rôles (roles) séparés par des virgules. Ces rôles doivent faire partie des rôles définis dans les balises role du fichier. ;

Pour l’exemple nous allons créer les utilisateurs manager et admin :

<!-- Manager ayant accès aux rôles de management -->
<user username="manager" password="manager" roles="manager-gui" />
 
<!-- Administrateur ayant accès tous les rôles -->
<user username="admin" password="admin" roles="manager-gui, admin-gui, admin-scripts" />

Enregistrez les modifications ;

Redémarrez le service tomcat9 :

service tomcat9 restart

Autoriser l’accès aux services

Pour rappel, les fonctionnalités sont Server StatusManager App et Host Manager.

Ces services se divisent en 2 applications :

  1. L’application manager qui comprend le statuts du serveur (Server Statuts) et le gestionnaire d’applications (Manager App) ;
  2. L’application host-manager qui comprend le gestionnaire d’hôte (Host Manager).

Par défaut, le dossier où sont stockées les applications java est $CATALINA_HOME/webapps/ ($CATALINA_HOME = valeur que vous avez donné à cette variable précédemment). C’est dans ce dossier que vous devrez placez vos futurs applications.

Pour configurer les autorisations d’accès depuis l’extérieur il faut utiliser des fichiers de type context.xml qui définissent dans quelle situation nous somme autorisé à accéder à une page. C’est fichiers sont stockés par défaut dans le répertoire $CATALINA_HOME/conf/Catalina/localhost/.

Chaque application web déployée doit avoir son fichier context.xml portant son nom et correctement configuré si pour qu’elle soit accessible à distance.

Nous allons autoriser l’accès aux applications manager et host-manager à distance.

Créez le fichier manager.xml et host-manager.xml :

nano /opt/tomcat9/conf/Catalina/localhost/manager.xml /opt/tomcat9/conf/Catalina/localhost/host-manager.xml

Ajoutez à chacun les lignes suivantes :

<Context privileged="true">
     <Valve className="org.apache.catalina.valves.RemoteAddrValve"
          allow="^.*$"/>
</Context>

L’option allow définit les hôtes ayant accès aux pages de gestion et d’administration. Ici, la valeur ^.*$ signifie que tout le monde à accès à ces pages.

Si vous souhaitez définir l’accès à la machine locale seulement, utilisez la valeur 127/.0/.0/.1. Ou si vous souhaitez définir l’accès à une machine en particulier autre que la machine locale, comme par exemple l’adresse 192.168.1.1, utilisez la valeur 192/.168/.1/.1 (ajoutez un / devant chaque point).

Enregistrez les fichiers ;

Redémarrez le service tomcat9 :

service tomcat9 restart

Vous pouvez maintenant accéder à tous les services de Tomcat en utilisant les utilisateur que vous avez créé.

Modifier le port d’accès à Tomcat [Facultatif]

Par défaut, c’est le port 8080 qui est utilisé pour accéder à Tomcat. Pour changer de port, il vous faudra modifier le fichier $CATALINA_HOME/conf/server.xml.

Éditez le fichier server.xml :

nano /opt/tomcat9/conf/server.xml

Repérez les lignes suivante :

<Connector port="8080" protocol="HTTP/1.1"
     connectionTimeout="20000"
     redirectPort="8443" />

Modifiez le la valeur de port 80 (port par défaut utilisé par les navigateurs web) par exemple :

<Connector port="80" protocol="HTTP/1.1"
     connectionTimeout="20000"
     redirectPort="8443" />

Enregistrez les modifications ;

Redémarrez le service tomcat9 :

service tomcat9 restart

Vous pouvez maintenant accéder à Tomcat à l’adresse http://IPServeur:80 en utilisant le nouveau port.


Ce tutoriel est terminé. Votre serveur Tomcat est maintenant fonctionnel, il ne vous reste plus qu’à l’exploiter.

Si vous avez des problèmes, où que vous trouvez que certains points sont mal expliqués (ou faux), n’hésitez pas à m’avertir.