web-dev-qa-db-fra.com

tomcat - Variables CATALINA_BASE et CATALINA_HOME

J'ai plusieurs instances de Tomcat 6 s'exécutant sur le même serveur (Linux) et cela fonctionne comme prévu. J'essaie de savoir quelle est la pratique habituelle en ce qui concerne la définition des variables CATALINA_HOME Et CATALINA_BASE.

Dans mon installation Tomcat, j’ai configuré CATALINA_HOME Pour pointer vers un dossier "commun" (disons /Tomcat6) Et la variable CATALINA_BASE Varie en fonction du nom de l’instance (disons /Tomcat_instance1, /Tomcat_instance2)

Ma question est la suivante:

  • Ai-je vraiment besoin de deux variables?
  • Ou puis-je simplement avoir un CATALINA_HOME Et supprimer CATALINA_BASE (Ou vice-versa)?
89
souser

Si vous exécutez plusieurs instances de Tomcat sur un même hôte, vous devez définir CATALINA_BASE être égal au .../Tomcat_instance1 ou .../Tomcat_instance2 répertoire en fonction de chaque instance et du CATALINA_HOME variable d’environnement vers l’installation Tomcat commune dont les fichiers seront partagés entre les deux instances.

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

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

95
Russ

CATALINA_HOME contre CATALINA_BASE

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

En d'autres termes: CATALINA_HOME est requis et CATALINA_BASE est facultatif.

CATALINA_HOME représente la racine de votre installation Tomcat.

Tomcat peut éventuellement être configuré pour plusieurs instances en définissant $CATALINA_BASE pour chaque instance. Si plusieurs instances ne sont pas configurées, $CATALINA_BASE est le même que $CATALINA_HOME.

Voir: Apache Tomcat 7 - Introduction

Courir avec CATALINA_HOME et CATALINA_BASE est documenté dans RUNNING.txt qui dit:

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

Vous ne pouvez pas configurer CATALINA_HOME et CATALINA_BASE variables dans le script setenv, car elles permettent de 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 de Tomcat

Dans de nombreuses circonstances, il est souhaitable de disposer d'une copie unique d'une distribution binaire Tomcat partagée entre plusieurs utilisateurs sur le même serveur. Pour rendre cela possible, vous pouvez définir le CATALINA_BASE variable d’environnement dans le répertoire contenant les fichiers de votre instance Tomcat "personnelle".

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

Dans CATALINA_BASE:

  • bin - uniquement: 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 - Journaux et fichiers de sortie
  • webapps - Applications Web chargées automatiquement
  • work - Répertoires de travail temporaires pour les applications Web
  • temp - Répertoire utilisé par la machine virtuelle Java 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 remplaçant les "normes approuvées" standard. Par défaut c'est absent.

Comment vérifier

Le moyen le plus simple de vérifier quelle est votre CATALINA_BASE et CATALINA_HOME est en cours d'exécution 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, à l'aide de l'outil dpkg comme ci-dessous (Debian/Ubuntu):

dpkg -L Tomcat7-common
72
kenorb

Je ne peux pas dire que je connais la meilleure pratique, mais voici mon point de vue.

Est-ce que vous utilise ces variables pour quoi que ce soit?

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

catalina.sh définit les variables dont Tomcat a besoin pour fonctionner prêtes à l’emploi. 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 configuration fonctionne ou non lorsque vous démarrez votre serveur.

11
Lauri Lehtinen

Montrer du doigt CATALINA_BASE dans un répertoire différent de CATALINA_HOME vous permet de séparer le répertoire de configuration du répertoire des fichiers binaires.

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

Cela est également utile lorsque vous souhaitez mettre à jour les fichiers binaires, sans modification, ou si vous devez sauvegarder/restaurer vos fichiers de configuration pour Tomcat.

Mise à jour 2018

Il existe un moyen plus simple de définir CATALINA_BASE à l’aide de l’utilitaire makebase. J'ai posté un tutoriel qui couvre ce sujet à http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-Tomcat.html avec un tutoriel vidéo à 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 le fichier CATALINA_BASE variable d'environnement. Vous devrez mettre quelques fichiers dans ce répertoire:

  • Copiez le répertoire conf à partir du répertoire d’installation Tomcat d’origine, y compris son contenu, et assurez-vous que Tomcat dispose des autorisations de lecture nécessaires. Éditez les fichiers de configuration en fonction de vos besoins.
  • Créez un répertoire logs si conf/logging.properties pointe vers ${catalina.base}/logs et assurez-vous que Tomcat dispose des autorisations de lecture/écriture nécessaires.
  • 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 en écriture.
  • Créez un répertoire work dont le nom par défaut est ${CATALINA_BASE}/work et assurez-vous que Tomcat dispose des droits en écriture.
7
isapir

CATALINA_BASE est facultatif.

Toutefois, dans les scénarios suivants, il est utile de configurer CATALINA_BASE de manière distincte 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 installation de Tomcat à exécuter, avec plusieurs configurations de serveur CATALINA_BASE exécutées sur des ports distincts.
    • Si un correctif ou une mise à niveau de version est nécessaire, une seule modification d'installation est requise ou doit être testée/vérifiée/signée.
  2. Séparation des préoccupations (responsabilité unique)

    • Le runtime de Tomcat est standard et ne change pas à chaque processus de publication. binaires Tomcat
    • Le processus de publication peut ajouter des éléments tels que application Web (dossier Webapps), configuration de l’environnement (répertoire conf), répertoire logs/temp/work.
1
Anamika