tomcat – Variables CATALINA_BASE et CATALINA_HOME

J’ai plusieurs instances de tomcat 6 sur le même serveur (Linux) et cela fonctionne comme prévu. J’essaie de savoir quelle est la pratique standard en ce qui concerne la définition des variables CATALINA_HOME et CATALINA_BASE .

Dans mon installation tomcat, j’ai configuré CATALINA_HOME pour qu’il pointe vers un dossier “commun” (say /tomcat6 ) et que la variable CATALINA_BASE varie en fonction du nom de l’instance (par exemple /tomcat_instance1 , /tomcat_instance2 ).

Ma question est la suivante:

  • Ai-je vraiment besoin de deux variables?
  • Ou puis-je avoir un CATALINA_HOME et supprimer CATALINA_BASE (ou vice-versa)?

Si vous exécutez plusieurs instances de Tomcat sur un seul hôte, vous devez définir CATALINA_BASE comme égal au .../tomcat_instance1 ou .../tomcat_instance2 correspondant à chaque instance et à la variable d’environnement CATALINA_HOME à l’installation commune de Tomcat. sera partagé entre les deux instances.

L’environnement CATALINA_BASE est facultatif si vous exécutez une seule instance Tomcat sur l’hôte et si vous utilisez par défaut CATALINA_HOME dans ce cas. Si vous exécutez plusieurs instances comme vous le faites, vous devez les fournir.

Il y a une assez bonne description de cette configuration dans le fichier RUNNING.txt à la racine de la dissortingbution Apache Tomcat sous l’en-tête Configuration avancée – Instances multiples de Tomcat.

CATALINA_HOME vs CATALINA_BASE

Si vous exécutez plusieurs instances, vous avez besoin des deux variables, sinon uniquement CATALINA_HOME .

En d’autres termes, CATALINA_HOME est requirejs et CATALINA_BASE est facultatif.

CATALINA_HOME représente la racine de votre installation Tomcat.

En option, Tomcat peut être configuré pour plusieurs instances en définissant $CATALINA_BASE pour chaque instance. Si plusieurs instances ne sont pas configurées, $CATALINA_BASE est identique à $CATALINA_HOME .

Voir: Apache Tomcat 7 – Introduction

Exécuter avec CATALINA_HOME et CATALINA_BASE est documenté dans RUNNING.txt qui indique:

Les variables d’environnement CATALINA_HOME et CATALINA_BASE permettent respectivement de spécifier l’emplacement d’Apache Tomcat et l’emplacement de sa configuration active.

Vous ne pouvez pas configurer les variables CATALINA_HOME et CATALINA_BASE dans le script setenv , car elles sont utilisées pour rechercher ce fichier.

Par exemple:

(4.1) Tomcat peut être démarré en exécutant l’une des commandes suivantes:

  %CATALINA_HOME%\bin\startup.bat (Windows) $CATALINA_HOME/bin/startup.sh (Unix) 

ou

  %CATALINA_HOME%\bin\catalina.bat start (Windows) $CATALINA_HOME/bin/catalina.sh start (Unix) 

Plusieurs instances Tomcat

Dans de nombreuses circonstances, il est souhaitable de disposer d’une seule copie d’une dissortingbution binary Tomcat partagée entre plusieurs utilisateurs sur le même serveur. Pour rendre cela possible, vous pouvez définir la variable d’environnement CATALINA_BASE sur le répertoire qui contient les fichiers de votre instance Tomcat “personnelle”.

Lors de l’exécution avec CATALINA_HOME et CATALINA_BASE , les fichiers et répertoires sont divisés comme suit:

Dans CATALINA_BASE :

  • bin – Only: setenv.sh (* nix) ou setenv.bat (Windows), tomcat-juli.jar
  • conf – Fichiers de configuration du serveur (y compris server.xml)
  • lib – Bibliothèques et classes, comme expliqué ci-dessous
  • logs – Fichiers de logs et de sortie
  • webapps – Applications Web chargées automatiquement
  • work – Répertoires de travail temporaires pour les applications Web
  • temp – Répertoire utilisé par la JVM pour les fichiers temporaires>

Dans CATALINA_HOME :

  • bin – Scripts de démarrage et d’arrêt
  • lib – Bibliothèques et classes, comme expliqué ci-dessous
  • endorsed – Bibliothèques qui remplacent les “Normes approuvées” standard. Par défaut, il est absent.

Comment vérifier

Le moyen le plus simple de vérifier ce que sont votre CATALINA_BASE et CATALINA_HOME consiste à exécuter startup.sh , par exemple:

 $ /usr/share/tomcat7/bin/startup.sh Using CATALINA_BASE: /usr/share/tomcat7 Using CATALINA_HOME: /usr/share/tomcat7 

Vous pouvez également vérifier où les fichiers Tomcat sont installés, en dpkg outil dpkg ci-dessous (Debian / Ubuntu):

 dpkg -L tomcat7-common 

Je ne peux pas dire que je connais les meilleures pratiques, mais voici ma perspective.

Utilisez- vous ces variables pour quelque chose?

Personnellement, je n’ai pas eu besoin de changer ni sous Linux, ni sous Windows, dans des environnements allant du développement à la production. À moins que vous ne fassiez quelque chose de particulier qui repose sur eux, vous risquez de les laisser seuls.

catalina.sh définit les variables que Tomcat doit utiliser immédiatement. Il dit aussi que CATALINA_BASE est facultatif:

 # CATALINA_HOME May point at your Catalina "build" directory. # # CATALINA_BASE (Optional) Base directory for resolving dynamic portions # of a Catalina installation. If not present, resolves to # the same directory that CATALINA_HOME points to. 

Je suis sûr que vous saurez si votre installation fonctionne ou non lorsque vous démarrez votre serveur.

Le fait de pointer CATALINA_BASE vers un répertoire différent de CATALINA_HOME vous permet de séparer le répertoire de configuration du répertoire des fichiers binarys.

Par défaut, CATALINA_BASE (configurations) et CATALINA_HOME (fichiers binarys) pointent vers le même dossier, mais séparer les configurations des fichiers binarys peut vous aider à exécuter plusieurs instances de Tomcat côte à côte sans dupliquer les fichiers binarys.

Il est également utile lorsque vous souhaitez mettre à jour les fichiers binarys, sans modifier, ou devez sauvegarder / restaurer vos fichiers de configuration pour Tomcat.

Mise à jour 2018

Il existe un moyen plus simple de définir CATALINA_BASE maintenant avec l’utilitaire makebase . J’ai posté un tutoriel sur ce sujet à l’ adresse http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-tomcat.html ainsi qu’un tutoriel vidéo sur https://youtu.be / nuugoG5c-7M

Réponse originale suite ci-dessous

Pour tirer parti de cette fonctionnalité, créez simplement le répertoire config et pointez-le avec la variable d’environnement CATALINA_BASE . Vous devrez placer des fichiers dans ce répertoire:

  • Copiez le répertoire conf répertoire d’installation Tomcat d’origine, y compris son contenu, et vérifiez que Tomcat dispose des droits de lecture nécessaires. Modifiez les fichiers de configuration en fonction de vos besoins.
  • Créez un répertoire de logs si conf/logging.properties pointe vers ${catalina.base}/logs et assurez-vous que Tomcat dispose des droits de lecture / écriture.
  • Créez un répertoire temp si vous ne remplacez pas la valeur par défaut de $CATALINA_TMPDIR qui pointe vers ${CATALINA_BASE}/temp et assurez-vous que Tomcat dispose des droits d’access en écriture.
  • Créez un répertoire de work dont la valeur par défaut est ${CATALINA_BASE}/work et assurez-vous que Tomcat dispose des droits d’access en écriture.

CATALINA_BASE est facultatif.

Toutefois, dans les scénarios suivants, il est utile de configurer CATALINA_BASE, distinct de CATALINA_HOME.

  1. Lorsque plus d’une instance de tomcat s’exécute sur le même hôte

    • Cela permet d’avoir une seule exécution de l’installation tomcat, avec plusieurs configurations de serveur CATALINA_BASE s’exécutant sur des ports distincts.
    • Si un correctif ou une mise à niveau de version est nécessaire, seules 1 modifications d’installation sont requirejses ou doivent être testées / vérifiées / déconnectées.
  2. Séparation des préoccupations (responsabilité unique)

    • Le moteur d’exécution Tomcat est standard et ne change pas à chaque processus de publication. c’est-à-dire binarys Tomcat
    • Le processus de publication peut append plus de choses comme application Web (dossier webapps), configuration de l’environnement (répertoire conf), répertoire logs / temp / work

C’est le dossier parent de bin qui contient le fichier tomcat.exe:

 CATALINA_HOME='C:\Program Files\Apache Software Foundation\Tomcat 6.0' 

CATALINA_BASE est identique à CATALINA_HOME .