1- Prise en main rapide avec les exemples, affichage des logs
Avant de déployer notre propre war, nous allons tester les exemples d'application web installées avec le paquet tomcat5.5-webapps.
Pour cela il suffit de démarrer le serveur et d'aller sur http://localhost:8180/manager/html. Vous pouvez alors cliquer sur les liens /jsp-examples ou /servlets-examples et tester les différents exemples.

A chaque fois qu'une application est déployée ou qu'on navigue sur une de ces applications, des logs sont générés. Les fichiers de logs de Tomcat 5.5 se situent dans : /var/lib/tomcat5.5/logs

Pour visualiser "en live" un fichier de log, nous utilisons la commande :

sudo tail -f le_nom_du_fichier.log

Pour quitter cet affichage, il suffit de faire Ctrl+C

Si on veut juste afficher le fichier de log, il suffit de faire :

sudo cat le_nom_du_fichier.log

En regardant le fichier catalina.******.log nous remarquons qu'il y a des erreurs :

Caused by: java.security.AccessControlException: access denied (java.io.FilePermission /usr/share/tomcat5.5-webapps/servlets-examples/WEB-INF/classes/logging.properties read)



2-Aperçu des permissions
Après un petit passage sur Google, j'ai trouvé l'article suivant : Tomcat 5.5 On Debian: AccessControlException for logging.properties

En réalité il faut donner des permissions de lecture à la librairie tomcat-juli.jar sur le fichier logging.properties (même s'il n'existe pas).

Pour ce faire nous allons dans le dossier /etc/tomcat5.5/policy.d/
Puis nous modifions le fichier 50user.policy en ajoutant les lignes suivantes :

grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
  permission java.io.FilePermission "${catalina.home}-webapps/servlets-examples/WEB-INF/classes/logging.properties", "read";
  permission java.io.FilePermission "${catalina.home}-webapps/jsp-examples/WEB-INF/classes/logging.properties", "read";
};

On arrête le serveur. Puis en allant dans le dossier /var/lib/tomcat5.5/logs , on supprime les fichiers de logs :

sudo rm *.log

Et on redémarre le serveur et en ouvrant le fichier catalina.******.log on voit qu'il n'y a plus d'erreur !!

3-WinSCP
Pour déployer un war depuis Windows sur le serveur sous Ubuntu, nouos allons utiliser WinSCP :

WinSCP est un client SFTP graphique pour Windows. Il utilise SSH et est open source.

Après téléchargement et installation, on crée une nouvelle session :

  • hôte : 127.0.0.1 ou localhost
  • port 2222 (au lieu du port par défaut (22)
  • identifiant : darkmarmotte
  • mdp : darkmarmotte

A gauche nous avons l'arborescence windows, à droite celle d'Ubuntu (on arrive d'ailleurs sur le dossier home de notre utilisateur darkmarmotte).

4-Déploiement d'un fichier war
Dans les billets ''Créer un service de configuration avec Spring (1,2 et 3)'', j'ai crée une application web toute simple dans Eclipse.
Avec Maven j'ai généré un war (mp-spring-service-1-0.0.1-SNAPSHOT.war) dont je me sers dans ce billet. Mais n'importe quel fichier war bien constitué peut servir d'exemple.

Pour déployer une application web, il suffit de copier le fichier war dans le dossier /usr/share/tomcat5.5/webapps. Tomcat se charge alors de le déployer automatiquement en créant un dossier du même nom.
Malheureusement, pour des questions de sécurité, il n'est pas possible de copier directement notre war dans le dossier webapps.
Nous allons faire cette manipulation en plusieurs étapes :

  • Dans un premier temps, avec WinSCP, on copie le fichier war dans le dossier /home/darkmarmotte où nous avons les droits d'écriture.
  • En ligne de commande j'en profite pour changer le nom :
mv mp-spring-service-1-0.0.1-SNAPSHOT.war mp-spring-service-1.war
  • En ligne de commande, en mode super utilisateur, je copie le fichier dans le répertoire webapps
sudo cp /home/darkmarmotte/mp-spring-service-1.war /usr/share/tomcat5.5/webapps

En regardant dans le dossier webapps, on constate que le projet a été déployé car un dossier du même nom a été créé :

drwxr-xr-x 4 tomcat55 nogroup    4096 2008-08-01 18:07 mp-spring-service-1
-rw-r--r-- 1 root     root    2625280 2008-08-01 18:07 mp-spring-service-1.war

On peut alors accéder au site web en allant sur : http://localhost:8180/mp-spring-service-1/ !

5-Correction finale
Notre nouveau projet pose les mêmes problèmes de logs que les exemples. Nous ajoutons donc une nouvelle permission pour la librairie tomcat-juli.jar dans le fichier 50user.policy :

permission java.io.FilePermission "${catalina.base}/webapps/mp-spring-service-1/WEB-INF/classes/logging.properties", "read";

Après redémarrage du serveur tout marche !!! On crée une nouvelle instance de notre machine virtuelle !