tomcat - Variables CATALINA_BASE et CATALINA_HOME

97

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

Dans mon installation tomcat, j'ai installé CATALINA_HOMEpour pointer vers un dossier « commun » ( par exemple /tomcat6) et la CATALINA_BASEvariable évolue 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 en avoir un CATALINA_HOMEet m'en débarrasser CATALINA_BASE(ou vice-versa)?
souser
la source
3
La question elle-même est vraiment une réponse.
Koray Tugay
4
La raison pour laquelle vous devez faire cela est de séparer la maintenance du logiciel Tomcat (qui vit dans $CATALINA_HOME) de la maintenance de la configuration et du contenu de l'instance Tomcat (qui vivent dans $CATALINA_BASE).
reinierpost le

Réponses:

106

Si vous exécutez plusieurs instances de Tomcat sur un seul hôte, vous devez définir CATALINA_BASEune valeur égale au répertoire .../tomcat_instance1ou .../tomcat_instance2selon le cas pour chaque instance et à la CATALINA_HOMEvariable d'environnement de l'installation Tomcat commune dont les fichiers seront partagés entre les deux instances.

L' CATALINA_BASEenvironnement est facultatif si vous exécutez une seule instance Tomcat sur l'hôte et sera par défaut CATALINA_HOMEdans ce cas. Si vous exécutez plusieurs instances telles quelles, elles doivent être fournies.

Il y a une assez bonne description de cette configuration dans le RUNNING.txtfichier à la racine de la distribution Apache Tomcat sous la rubrique Configuration avancée - Plusieurs instances Tomcat

Russ
la source
1
Votre deuxième paragraphe est incorrect lorsque vous utilisez le pack Tomcat sur Ubuntu. Il sépare correctement le logiciel Tomcat (dans $ CATALINA_HOME) de l'instance Tomcat (dans $ CATALINA_BASE).
reinierpost
84

CATALINA_HOME contre CATALINA_BASE

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

En d'autres termes: CATALINA_HOMEest obligatoire et CATALINA_BASEfacultative.

CATALINA_HOME représente la racine de votre installation Tomcat.

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

Voir: Apache Tomcat 7 - Introduction

Exécution avec séparé CATALINA_HOMEet CATALINA_BASEest documenté dans RUNNING.txt qui dit:

Les variables d'environnement CATALINA_HOMEet CATALINA_BASEsont utilisées pour spécifier l'emplacement d'Apache Tomcat et l'emplacement de sa configuration active, respectivement.

Vous ne pouvez pas configurer CATALINA_HOMEet les CATALINA_BASEvariables dans le setenvscript, car elles sont utilisées pour trouver 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 nombreux cas, il est souhaitable d'avoir une seule copie d'une distribution binaire Tomcat partagée entre plusieurs utilisateurs sur le même serveur. Pour rendre cela possible, vous pouvez définir la CATALINA_BASE variable d'environnement sur le répertoire contenant les fichiers de votre instance Tomcat «personnelle».

Lors de l'exécution avec un CATALINA_HOMEet distinct CATALINA_BASE, les fichiers et 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 - Fichiers journaux 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- Les bibliothèques qui remplacent les "Normes approuvées". Par défaut, il est absent.

Comment vérifier

Le moyen le plus simple de vérifier ce que vous CATALINA_BASEet CATALINA_HOMEest en exécutant 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, par dpkgoutil comme ci-dessous (Debian / Ubuntu):

dpkg -L tomcat7-common
Kenorb
la source
8
C'est une bien meilleure réponse que l'acceptation. Très bien expliqué.
dkanejs
Expliquez s'il vous plaît comment démarrer plusieurs instances de tomcat avec différentes CATALINA_BASE?
Mark le
CATALINA_BASE et CATALINA_HOME doivent être définis comme variables système: Windows: définissez CATALINA_BASE = chemin
Marquez le
11

Je ne peux pas dire que je connais les meilleures pratiques, mais voici mon point de vue.

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 variant du développement à la production. À moins que vous ne fassiez quelque chose de particulier qui repose sur eux, il y a de fortes chances que vous puissiez les laisser seuls.

catalina.shdéfinit les variables dont Tomcat a besoin pour fonctionner immédiatement. Il dit également que CATALINA_BASEc'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 presque sûr que vous saurez si votre configuration fonctionne ou non lorsque vous démarrez votre serveur.

Lauri Lehtinen
la source
Pouvez-vous définir le catalina_homechemin dans le \bin\catalina.shfichier pour les deux instances de tomcat?
Giri
8

Le fait de pointer CATALINA_BASEvers un répertoire différent de CATALINA_HOMEvous permet de séparer le répertoire de configuration du répertoire binaires.

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

Il est également utile lorsque vous souhaitez mettre à jour les binaires, sans les modifier, ou avoir besoin de 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' makebaseutilitaire. J'ai publié un tutoriel qui couvre ce sujet sur http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-tomcat.html avec un tutoriel vidéo sur https://youtu.be / nuugoG5c-7M

Réponse originale suite ci-dessous

Pour profiter de cette fonctionnalité, créez simplement le répertoire de configuration et pointez-le avec la CATALINA_BASEvariable d'environnement. Vous devrez mettre quelques fichiers dans ce répertoire:

  • Copiez le confrépertoire du répertoire d'installation d'origine de Tomcat, y compris son contenu, et assurez-vous que Tomcat dispose des autorisations de lecture sur celui-ci. Modifiez les fichiers de configuration selon vos besoins.
  • Créez un logsrépertoire s'il conf/logging.propertiespointe vers ${catalina.base}/logset assurez-vous que Tomcat dispose des autorisations de lecture / écriture sur celui-ci.
  • Créez un temprépertoire si vous ne remplacez pas la valeur par défaut de $CATALINA_TMPDIRlaquelle pointe ${CATALINA_BASE}/tempet assurez-vous que Tomcat dispose des autorisations d'écriture sur celui-ci.
  • Créez un workrépertoire dont la valeur par défaut est ${CATALINA_BASE}/worket assurez-vous que Tomcat dispose des droits d'écriture sur celui-ci.
isapir
la source
1

CATALINA_BASE est facultatif.

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

  1. Lorsque plusieurs instances de tomcat s'exécutent sur le même hôte

    • Cela permet d'avoir seulement 1 runtime d'installation de tomcat, avec plusieurs configurations de serveur CATALINA_BASE s'exécutant sur des ports séparés.
    • 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 / validée.
  2. Séparation des préoccupations (responsabilité unique)

    • Le runtime Tomcat est standard et ne change pas à chaque processus de publication. ie binaires Tomcat
    • Le processus de publication peut ajouter plus d'éléments en tant qu'application web (dossier webapps), configuration de l'environnement (répertoire conf), répertoire logs / temp / work
Amit Kaneria
la source
-5

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_BASEest le même que CATALINA_HOME.

Gourou
la source
2
Votre réponse est trompeuse ... la bonne réponse devrait indiquer Si plusieurs instances ne sont pas configurées , $ CATALINA_BASE est identique à $ CATALINA_HOME.` selon la documentation
Eddie B
1
CATALINA_BASE est égal à CATALINA_HOME uniquement lorsque vous exécutez l'instance racine. Lorsque vous avez plusieurs instances, ce sera différent.
splatch le
1
Je dirais que CATALINA_BASE et CATALINA HOME devraient être différents même si vous n'avez qu'une seule instance. De cette façon, votre contenu est séparé de votre installation. Par exemple, CATALINA_HOME dans / usr / share / tomcat et CATALINA_BASE dans / var / lib / tomcat
user1725779
non. Ce peut être la même chose, mais peut-être pas la même chose, pour plusieurs instances.
Andrey Regentov