Accueil > Java > Plusieurs instances de Tomcat sur Ubuntu

Plusieurs instances de Tomcat sur Ubuntu

Pourquoi plusieurs instances ?

  • Pour pouvoir déployer plusieurs applications partageant les même adresses, sur plusieurs virtuals hosts, sans pour autant gérer ces virtuals hosts dans Tomcat
  • Pour pouvoir arrêter / démarrer les JVM de manière indépendante
  • Pouvoir utiliser des environnements Java différents (version de la JVM, librairies partagées, propriétés système, …)
  • Isoler complètement les applications, une fuite mémoire sur l’une ne peut pas impacter l’autre.

Variables d’environnement.

Tomcat utilise deux variables d’environnement :

  • CATALINA_HOME pointe vers le répertoire d’installation de Tomcat
  • CATALINA_BASE est utilisée pour tous les chemins relatifs : configuration, applications.

Si CATALINA_BASE n’est pas précisée, c’est CATALINA_HOME qui est utilisée.

Mise en oeuvre avec Ubuntu

  • Installer tomcat et OpenJDK et le paquet “tomcat6-user” qui permet de créer d’autres instances tomcat :

tom@ubuntu:~$ sudo apt-get install -y tomcat6 openjdk-6-jdk tomcat6-user

  • Pour ne pas créer de confusion, désactiver l’instance principale de tomcat :

tom@ubuntu:~$ sudo update-rc.d -f tomcat6 remove
tom@ubuntu:~$ sudo service tomcat6 stop

  • Créer une nouvelle instance, nommée tomcat6-www, dans notre exemple :

tom@ubuntu:~$ cd /opt
tom@ubuntu:/opt$ sudo tomcat6-instance-create -p 8081 -c 8006 tomcat6-www
tom@ubuntu:/opt$ sudo mkdir tomcat6-www/conf/policy.d
tom@ubuntu:/opt$ sudo touch tomcat6-www/conf/policy.d/empty.policy
tom@ubuntu:/opt$ sudo chown -R tomcat6:tomcat6 tomcat6-www
tom@ubuntu:/opt$ cd /etc/init.d/
tom@ubuntu:/etc/init.d$ sudo cp tomcat6 tomcat6-www

8081 est le port http et 8006 est port d’arrêt.

  • Editer le script de lancement /etc/init.d/tomcat6-www, y changer les variables suivantes :

NAME=tomcat6-www
JVM_TMP=/tmp/tomcat6-www-tmp
DEFAULT=/etc/default/tomcat6
CATALINA_HOME=/usr/share/tomcat6
CATALINA_BASE=/opt/tomcat6-www

  • Activer le démarrage automatique, démarrer l’instance :

tom@ubuntu:/etc/init.d$ sudo update-rc.d tomcat6-www defaults 90
tom@ubuntu:/etc/init.d$ sudo service tomcat6-www start

Tags:,
  1. 18 janvier 2012 à 09:37 | #1

    C’est un point que je trouvais pénible avec Tomcat, mais je ne connaissais pas ce paquet tomcat6-user et la commande “tomcat6-instance-create”…
    En plus il semble aussi dispo sur Debian (Squeeze pour nous)

    Merci donc Thomas de m’éduquer :-)
    (même si maintenant on utilise glassfish qui possède cette fonctionnalité out-of-the-box)

  2. 18 janvier 2012 à 10:23 | #2

    Et comment sont géré les mises à jour de séurité dans pareil cas ? imaginons que le script /etc/init.d/tomcat6 présente une faille, qu’une nouvelle version du paquet tomcat6 va venir corriger, comment être certain que /etc/init.d/tomcat6-www sera bien mis à jour ? sans avoir à lire les changelog de toutes les mises à jour ?

    • 18 janvier 2012 à 10:30 | #3

      En effet, les fichiers dupliqués ne seront pas mis à jour : script de démarrage, server.xml, ..
      Ca limite quand même le nombre de fichiers dupliqués par rapport à une installation hors des paquets de la distribution.

  1. Pas encore de rétroliens.

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Twitter picture

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Connexion à %s

Suivre

Get every new post delivered to your Inbox.