Cette solution est la plus simple et la plus directe, mais aussi la plus lourde en terme de ressources et de maintenance. En me basant sur ce qui est présenté ici j'ai mis en place une solution qui permet simplement d'avoir une instance de tomcat par application sur base d'une seule installation et de l'utilitaire run-parts.
Tout au long de cette mise en place <catalina_home> représente votre répertoire d'installation tomcat. Le téléchargement et la mise en place d'un tomcat sous debian sont expliqués en long et en large sur le net, je supposerai donc que le serveur est installé et configuré correctement dans sa forme normale.
Tout d'abord on crée un répertoire pour y placer les scripts pour le démarrage de chacune des instances
#cd <catalina_home> #mkdir bin/mbin
Ensuite on crée un premier fichier dans le répertoire mbin qui devra se nommer startup_NNN où NNN est un numéro à trois chiffres (par exemple 800). Ce numéro sera extrait automatiquement par le script et utilisé par l'instance démarrée pour créer les différents ports d'écoute.
#!/bin/sh ######################################################## ## ## Demarrage de TOMCAT avec comme port de base celui ## spécifié dans le nom de fichier ## ######################################################## export TCT_PORT_BASE=${0##*_} export JAVA_OPTS=-Dtomcat.server.port=$TCT_PORT_BASE # resolve links - $0 may be a softlink PRG="$0" while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`/"$link" fi done PRGDIR=`dirname "$PRG"` EXECUTABLE=../catalina.sh export CATALINA_TMPDIR=$PRGDIR/../../work$TCT_PORT_BASE mkdir -p "$CATALINA_TMPDIR" mkdir -p $PRGDIR/../../webapps$TCT_PORT_BASE "$PRGDIR"/"$EXECUTABLE" run &
Comme on peut le voir, avant de démarrer le serveur, le script vérifie que les répertoires: workNNN et webappsNNN existent et les crée le cas échéant. Ces deux répertoires serviront respectivement à contenir les fichiers de travail du serveur ainsi que les fichiers de déploiement.
Pour que tout fonctionne correctement, il ne reste plus qu'à modifier modifier le fichier conf/server.xml pour qu'il soit paramètrable via le numéro de base du port. On remplace donc dans ce fichier:
<Server port="8005" shutdown="SHUTDOWN"> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost">par
<Server port="${tomcat.server.port}5" shutdown="SHUTDOWN"> <Connector port="${tomcat.server.port}9" protocol="AJP/1.3" redirectPort="8443" /> <Connector port="${tomcat.server.port}8" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvmRoute${tomcat.server.port}">
On peut à présent tester que tout fonctionne en tapant la commande
#cd <catalina_home> #run-parts -v bin/mbin
Ceci devrait démarrer un serveur tomcat accessible en http://localhost:NNN8
Pour plus de clarté en cas de problème, on va aussi différencier les logs. Pour ce faire il faut éditer le fichier conf/logging.properties et y ajouter les informations relative au port utilisé, par exemple:
1catalina.org.apache.juli.FileHandler.prefix = catalinadevient
1catalina.org.apache.juli.FileHandler.prefix = ${tomcat.server.port}.catalina
A présent, pour créer une autre instance de tomcat, il suffit de recopier le fichier mbin/startup_NNN vers mbin/startup_NNM et en utilisant la commande run-parts sur le répertoire mbin, une nouvelle instance de tomcat sera démarrée automatiquement avec comme base de numérotation de port NNM au lieu de NNN.
Aucun commentaire:
Enregistrer un commentaire