Introduction

Il y a pléthore de billets sur le net pour installer Tomcat sur Ubuntu. Certains favorisent l’utilisation de “apt-get install” alors que d’autres décrivent la manière manuelle. Il apparaît que l’utilisation de “apt-get install” peut créer des problèmes et que si l’on veut supprimer par la suite l’installation, d’autres problèmes apparaissent.

Ici on notera les problèmes récurrents à l’utilisation de Java et on peut regretter l’absence de mécanismes tels que le Bundle pour Ruby.

De manière à m’éviter tous ces inconvénients et facilement nettoyer mon système, je vais procéder à l’installation de Tomcat dans la home directory d’un utilisateur tomcat (groupe tomcat), dans laquelle je mettrai toutes les dépendances. Un serveur NGinx fera le reverse proxy en front.

De cette manière, si je dois supprimer Tomcat, il me suffira de supprimer l’utilisateur et son home.

La suite de l’article montre l’installation de Tomcat 7.0.x avec Java 1.7.

Préparation

Création de l’utilisateur

sudo adduser tomcat  

la commande: id tomcat retourne:

uid=1001(tomcat) gid=1002(tomcat) groupes=1002(tomcat)  

Prenons ensuite l’identité de l’utilisateur:

sudo su - tomcat  

Attention: Toutes les commandes suivantes se font avec l’utilisateur que nous venons de défnir!

Installation de Java

Télécharger Java et le mettre dans la home de notre utilisateur. Décompresser l’archive avec ce même utilisateur :

tar zxvf jdk-7u*<version>*-linux-x64.tar.gz  

Maintenant un répertoire /home/tomcat/jdk a été créé.

Modifions les variables d’environnement pour notre utilisateur:

vi ~/.profile  

On ajoute les lignes suivantes à la fin du fichier:

JAVA_HOME="/home/tomcat/jdk*<version>*" PATH=$JAVA_HOME/bin:$PATH  

On sauvegarde, on source le .profile et on vérifie l’installation, comme dans l’exemple suivant:

source ~/.profile  
java -version  

retourne:

java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b15) Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)  

Voilà Java est installé pour notre utilisateur et paramétré correctement.

Installation de Tomcat

Télécharger l’archive depuis la home:

wget http://mirrors.linsrv.net/apache/tomcat/tomcat-7/v7.0.42/bin/apache-tomcat-7.0.42.tar.gz  

Décompresser l’archive:

tar zxvf v7.0.42/bin/apache-tomcat-7.0.42.tar.gz  

Voilà l’installation est finie. Il suffit maintenant d’aller dans le répertoire bin de l’installation et de lancer le script de démarrage du serveur. Dans notre cas cela donne:

cd ~/apache-tomcat-7.0.42/bin  
./catalina.sh start

retourne:

 Using CATALINA_BASE:   /home/tomcat/apache-tomcat-7.0.42
 Using CATALINA_HOME:   /home/tomcat/apache-tomcat-7.0.42
 Using CATALINA_TMPDIR: /home/tomcat/apache-tomcat-7.0.42/temp
 Using JRE_HOME:        /home/tomcat/jdk1.7.0_25
 Using CLASSPATH:       /home/tomcat/apache-tomcat-7.0.42/bin/bootstrap.jar:/home/tomcat/apache-tomcat-7.0.42/bin/tomcat-juli.jar

Par défaut Tomcat écoute sur le port 8080. Avec votre navigateur vous pouvez vous y connecter (exemple http://localhost:8080/). La page d’accueil du serveur doit s’afficher correctement.

Aucun utilisateur n’est paramétré par défaut. Aussi pour pouvoir avoir accès à l’interface d’administration, il faut modifier le fichier tomcat-users.xml du répertoire conf.

Voici un exemple de fichier qui permet à l’utilisateur tomcat, mot de passe tomcat, d’accéder au management d’application:

<role rolename="manager-gui"/>  
<role rolename="admin-gui"/>  
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>  

Sauvegarder le fichier après modification et relancer le serveur au moyen du script catalina.sh.

Utiliser NGinx comme reverse proxy

Pour finaliser correctement l’installation, on peut utiliser NGinx comme reverse proxy et accéder à notre Tomcat, par exemple, en utilisant l’URL monserveur.exemple.com.

Avec les paramètres de TomCat ci-dessus on obtient l’exemple suivant:

server {  
 listen 80;
 server_name monserveur.exemple.com;
 access_log off;
 location / {
 proxy_pass http://localhost:8080;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-for $remote_addr;
 port_in_redirect off;
 proxy_redirect http://jira.example.com:8080/jira /;
 proxy_connect_timeout 300;
 }
 # redirect server error pages to the static page /50x.html
 # error_page 500 502 503 504 /50x.html;
 location = /50x.html {
   root /usr/share/nginx/html;
 }
}

Voilà, pour plus d’information se référer à la documentation de Tomcat, accessible maintenant depuis notre serveur.

Notons que cette procédure fonctionne quelque soit la distribution Linux et les différentes versions de Java installées.