#!/bin/sh # Ce script sert à créer ou détruire une instance Tomcat # en créant un CATALINA_BASE indépendant. # L'usage habituel se fait sur une Debian 7 "Wheezy" avec # tomcat, libapache2-mod-jk et apache2 installé. # Prérequis : # - Debian Wheezy (Squeeze non testée) # - tomcat7 (6 non testée) # - libapache2-mod-jk avec le workers.properties du module # Trucs à nettoyer (si quelque chose part en vrille, ou simplement # pour désinstaller ): # - supprimer tout le répertoire REP_TOMCAT_MULTIINSTANCE # - supprimer /etc/default/tomcatN_XXX # - supprimer /etc/init.d/tomcatN_XXX # - supprimer les utilisateurs tomcatN_YYYY # - nettoyer les clusters PostgreSQL # Version de Tomcat : 6 ou 7 # TODO : voir si on peut le passer en paramètre pour gérer # Tomcat 6 & 7 sur la même machine VERSION_TOMCAT="7" # Quelques constantes internes MAX_INSTANCES=999 START_RANGE_TOMCATUID=8000 START_RANGE_TOMCAT_PORT_SYS=15000 START_RANGE_TOMCAT_PORT_HTTP=18000 START_RANGE_TOMCAT_PORT_AJP=19000 # Initialisation des variables globales MODE_CREATION=0 MODE_DESTRUCTION=0 TOMCAT_ENABLE_SHUTDOWN_PORT="" OPTION_WORKERS_PROPERTIES="" OPTION_VHOST_APACHE_SERVERNAME="" NB_CHIFFRES_DANS_NUM_INSTANCE=$( printf "%d" "$MAX_INSTANCES" | wc -c ) REP_TOMCAT_MULTIINSTANCE="/var/lib/tomcat$VERSION_TOMCAT-multiinstances" # On récupère également le nom de l'utilisateur et du groupe de Tomcat if [ ! -f /etc/default/tomcat$VERSION_TOMCAT ]; then echo "ERREUR: /etc/default/tomcat$VERSION_TOMCAT inaccessible." >&2 exit 1 fi . /etc/default/tomcat$VERSION_TOMCAT # Par défaut, on arrête le script à la première erreur non "catchée" set -e # Fonctions # Arguments # $1 : Version de Tomcat # $2 : nom du worker # $3 : port AJP du worker ajout_worker_properties() { test -n "$1" && test -n "$2" && test -n "$3" || exit 1 # On se fiche un peu de la version de Tomcat, en fait :) case "$1" in 6|7) cat <&2 exit 1 ;; esac } # Arguments # $1 : Version de Tomcat # $2 : port système (d'habitude 8005) # $3 : port connecteur HTTP (8080, d'habitude) # $4 : port connecteur AJP (8009, d'habitude) generate_patch_tomcat_server_xml() { test -n "$1" && test -n "$2" && test -n "$3" && test -n "$4" && test -n "$5" || exit 1 case "$1" in 6|7) generate_patch_tomcat_server_xml_6 "$2" "$3" "$4" "$5" ;; *) echo "ERREUR: version de Tomcat non-gérée." >&2 exit 1 ;; esac } # Arguments # $1 : port système (d'habitude 8005) # $2 : port connecteur HTTP (8080, d'habitude) # $3 : port connecteur AJP (8009, d'habitude) generate_patch_tomcat_server_xml_6() { local NOM_WORKER TOMCAT_PORT_SYS TOMCAT_PORT_HTTP TOMCAT_PORT_AJP test -n "$1" && test -n "$2" && test -n "$3" && test -n "$4" || exit 1 NOM_WORKER="$1" TOMCAT_PORT_SYS="$2" TOMCAT_PORT_HTTP="$3" TOMCAT_PORT_AJP="$4" cat < - + @@ -69,10 +69,12 @@ APR (HTTP/AJP) Connector: /docs/apr.html Define a non-SSL HTTP/1.1 Connector on port 8080 --> - + --> - + - +