Pages enfant
  • Proposition pour l'installation de Tomcat

Au prix de quelques configurations Tomcat, et suivant les habitudes de chacun, il peut être intéressant de séparer "CATALINA_BASE" (conf) et "CATALINA_HOME" (install Tomcat, binaires,...) pour faciliter les montées de version.

C'est ce qui est expliqué ci-dessous.

Par rapport à une installation classique simple et usuelle où on décompresse l'archive tomcat simplement (sans modification des fichiers de configuration, car tout à fait fonctionnelle telle que donnée par défaut) , cette pratique complexifie toute de même l'installation ; de plus l'arborescence initiale (et classique) du Tomcat est également bouleversée.

La variable CATALINA_HOME doit être valuée, et le chemin"$CATALINA_HOME/bin" (Linux) ou "%CATALINA_HOME%\bin" (Windows) rajouté au PATH :

Unix (Fichier /etc/profile)
...
export CATALINA_HOME=<cheminVersHomeTomcat>
export PATH=$PATH:$CATALINA_HOME/bin
...
Windows
SET CATALINA_HOME=<cheminVersHomeTomcat>
SET PATH=%PATH%;%CATALINA_HOME%\bin

Cet exemple de scripts permet alors la séparation.

env.sh
...
export CATALINA_HOME=/usr/local/tomcatexport
export CATALINA_BASE=/opt/tomcat
export CATALINA_TMPDIR=$CATALINA_BASE/temp
export CATALINA_OPTS="-Djavax.net.ssl.trustStore=/path/to/esup.keystore"
export CATALINA_PID=/opt/tomcat/uportal.pid
...
installTomcat.sh
./home/ENT/env.sh
 
HOME=$CATALINA_HOME/..
BASE=$CATALINA_BASE/..
cd $HOME
wget http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.36/bin/apache-tomcat-6.0.36.tar.gz
tar -xzf apache-tomcat-6.0.36.tar.gz
ln -s apache-tomcat-6.0.36 tomcat
 
mkdir $CATALINA_BASE
cp -r $CATALINA_HOME/conf $CATALINA_BASE
mkdir $CATALINA_BASE/logs
mkdir $CATALINA_BASE/temp
mkdir $CATALINA_BASE/work
mkdir -p $CATALINA_BASE/shared/lib
mkdir -p $CATALINA_BASE/shared/classes
mkdir -p $CATALINA_BASE/lib
mkdir $CATALINA_BASE/common
ln -s $CATALINA_HOME/lib/ $CATALINA_BASE/common/lib
 
cp $CATALINA_HOME/conf/server.xml $CATALINA_BASE/conf/
cp $CATALINA_HOME/conf/catalina.properties $CATALINA_BASE/conf/
cp $CATALINA_HOME/conf/logging.properties $CATALINA_BASE/conf/
mkdir $BASE/webapps

Les applications sont à déployer dans $BASE/webapps. Adapter les fichiers $CATALINA_BASE/conf/server.xml, $CATALINA_BASE/conf/catalina.properties et $CATALINA_BASE/conf/logging.properties

Par rapport à l'exemple d'installation dans le fichier $CATALINA_BASE/conf/server.xml bien spécifier le bon path des contextes d'application comme ceci :

$CATALINA_BASE/conf/server.xml
...
<Context path="/portail" docBase="/opt/webapps/uPortal" reloadable="false" ...>
      <Resource name="jdbc/PortalDb" auth="Container" type="javax.sql.DataSource"
                username="USER" password="PASSWORD"
                driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://database.ip:3306/uPortal4"
                maxActive="100" maxIdle="30" maxWait="10000"
                poolPreparedStatements="true"
                removeAbandoned="true"
                removeAbandonedTimeout="300"
                validationQuery="SELECT 1"
                logAbandoned="true"
      />
      ...
</Context>
 ...

 Lors d'une migration de Tomcat, il suffira de:

  • faire un arrêt du Tomcat,
  • faire pointer le lien symbolique /usr/local/tomcat vers la nouvelle version des sources tomcat
  • puis relancer.

!! Attention toutefois lors d'un changement de version majeure !!

  • Aucune étiquette

Commentaire

  1. Solution alternative que nous utilisons notamment pour tous les canaux distribués en .zip / .tar.gz / .tgz

    Exemple simple avec esup-portlet-sympa :

    % git log --oneline
    1e55817 config.properties: configuration for uportal3-test and listes.univ-paris1.fr
    7de2f61 https://sourcesup.renater.fr/frs/download.php/4156/esup-portlet-sympa-4.2.tgz
    4a721e4 https://sourcesup.cru.fr/frs/download.php/3364/esup-portlet-sympa-4.0-RC1.tgz

    la mise à jour en 4.2 s'est fait avec une simple commande :

    % git-unarchive --rebase https://sourcesup.renater.fr/frs/download.php/4156/esup-portlet-sympa-4.2.tgz

    En utilisant le script https://github.com/pixel/git-unarchive

    Utiliser git nous permet de passer en production avec "git pull" puis restart/deploy