web-dev-qa-db-fra.com

Tomcat est installé avec CATALINA_HOME dans / usr / share / Tomcat6 et CATALINA_BASE dans / var / lib / Tomcat6

Je pense que c'est une bonne question.

J'ai trouvé cela aussi déroutant. J'ai installé Tomcat il y a quelques minutes (après un certain temps) et je remarque que ce sont deux endroits "webapps" différents.

dans/usr/share/Tomcat6/webapps/default_root/at/var/lib/Tomcat6/webapps/ROOT /

Le contenu des deux est le même mais aucun d'entre eux n'est un lien symbolique.

Quand j'ai commencé Tomcat, il est dit:

Citation:

Il s'agit de la page d'accueil Tomcat par défaut. Il peut être trouvé sur le système de fichiers local à l'adresse: /var/lib/Tomcat6/webapps/ROOT/index.html

Les vétérans de Tomcat6 pourraient être ravis d'apprendre que cette instance système de Tomcat est installée avec CATALINA_HOME dans/usr/share/Tomcat6 et CATALINA_BASE dans/var/lib/Tomcat6 Ainsi, sur la base de ces informations, le dossier/usr/share/... a été conservé pour la compatibilité descendante, non?

Mais selon ce que vous avez publié, les bibliothèques sont lues à partir de CATALINA_HOME au lieu de CATALINA_BASE.

Peut-être conservent-ils toujours cette référence par défaut pour empêcher d'autres systèmes de cesser de fonctionner après la mise à jour?

Bonne observation!

MISE À JOUR:

J'ai lu ceci sur: /usr/share/Tomcat6/bin/catalina.sh:

Citation:

# 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.

Lorsque nous lisons sur: /etc/init.d/Tomcat6:

(au début)

CATALINA_HOME=/usr/share/$NAME

(puis...)

# Directory for per-instance configuration files and webapps
CATALINA_BASE=/var/lib/$NAME

Cependant, si vous essayez de démarrer Tomcat manuellement (comme je l'ai fait il y a longtemps) avec: Sudo /usr/share/Tomcat6/bin/startup.sh

Il affiche:

Citation:

Using CATALINA_BASE: /usr/share/Tomcat6
Using CATALINA_HOME: /usr/share/Tomcat6
Using CATALINA_TMPDIR: /usr/share/Tomcat6/temp
Using JRE_HOME: /usr
touch: cannot touch `/usr/share/Tomcat6/logs/catalina.out': No such file or directory
/usr/share/Tomcat6/bin/catalina.sh: 357: cannot create /usr/share/Tomcat6/logs/catalina.out: Directory nonexistent

Alors, pourquoi ici CATALINA_BASE est réglé sur le même que CATALINA_HOME?

/ usr/share/Tomcat6/logs/n'existent pas, mais existe dans/var/lib/Tomcat6/logs /

Je vois que mes journaux écrivent dans/var/lib/... lors du démarrage de Tomcat à partir du script init.d. Il vaut donc mieux commencer à partir de là.

18
chandrasekhar

Je ne suis pas un expert de Tomcat mais j'avais ce même problème et j'ai pu redémarrer le serveur avec la commande: Sudo /etc/init.d/Tomcat6 restart

16
Jeff Wu

CATALINA_HOME - indique à "org.Apache.catalina.startup.Bootstrap" où chercher les fichiers/lib/bin et autres requis - qui sont des dépendances pour exécuter le serveur. Il s'agit essentiellement de votre répertoire de base d'installation de Tomcat.

CATALINA_BASE - attend une certaine structure de répertoires à analyser (une fois démarrée). Par exemple,/conf pour trouver server.xml et web.xml qui est spécifique à une application Web. tant que vous avez cette structure de répertoire et ce contenu, CATALINA_BASE peut être n'importe quel répertoire.

4
Senthu Sivasambu

J'ai vu ça.

La manière appropriée et mignonne est de créer un script "setenv.sh" dans votre dossier CATALINA_HOME/bin (dans votre cas "/usr/share/Tomcat6/bin/setenv.sh").

Le contenu de votre setenv.sh:

#!/bin/sh
export CATALINA_BASE=/new/catalinabase/path

Il n'est donc pas nécessaire de modifier catalina.sh par vous-même. Si setenv.sh est présent dans le répertoire bin, catalina.sh l'exécutera automatiquement.

1
Erik Kaju

Je ne peux pas vous dire pourquoi CATALINA_HOME et CATALINA_BASE sont les mêmes dans startup.sh (resp. Catalina.sh) - c'est vraiment étrange.

Bien sûr, vous pouvez démarrer Tomcat via le script init.d. Mais parfois, vous voudrez peut-être le démarrer via startup.sh/catalina.sh (par exemple pour le débogage).

Donc, comme solution de contournement/hack, vous pouvez corriger le problème en ajoutant la ligne suivante au début de /usr/share/Tomcat6/bin/catalina.sh

export CATALINA_BASE=/var/lib/Tomcat6
0
Simson