2010-08-10 7 views
17

Je pense que c'est une bonne question.Tomcat est installé avec CATALINA_HOME dans/usr/share/tomcat6 et CATALINA_BASE dans/var/lib/tomcat6

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

dans/usr/share/tomcat6/webapps/default_root/ dans/var/lib/tomcat6/webapps/ROOT/

Le contenu des deux sont les mêmes, mais aucun d'entre eux sont des liens symboliques.

Quand j'ai commencé tomcat il est dit:

Quote:

Ceci est la valeur par défaut Tomcat page d'accueil. Il se trouve sur le système de fichiers local à: /var/lib/tomcat6/webapps/ROOT/index.html

vétérans tomcat6 pourrait être heureux d'apprendre que cette instance du système de Tomcat est installé 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 des raisons de compatibilité ascendante, n'est-ce pas? Mais selon ce que vous avez posté, les bibliothèques sont lues à partir de CATALINA_HOME au lieu de CATALINA_BASE. Peut-être gardent-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:

Je lis ceci à: /usr/share/tomcat6/bin/catalina.sh:

Quote:

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

Quand nous lisons à:/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 

Toutefois, si vous essayez de démarrer avec TOMCAT manuellement (comme je l'ai fait il y a longtemps): /usr/share/tomcat6/bin/startup.sh sudo

Il affiche:

Quote:

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 la même chose que C ATALINA_HOME?

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

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

Répondre

16

Je ne suis pas un expert sur 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

0

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

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

donc comme solution de contournement/pirater, 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 
3

CATALINA_HOME - dit « org. apache.catalina.startup.Bootstrap "où chercher/lib/bin et autres - qui sont des dépendances pour exécuter le serveur. Il s'agit essentiellement de votre répertoire d'installation de Tomcat. CATALINA_BASE - s'attend à ce qu'une certaine structure de répertoires soit analysée (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 et ce contenu de répertoire, CATALINA_BASE peut être n'importe quel répertoire.

1

J'ai vu ça. Le moyen correct et mignon 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'y a donc pas besoin 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.

-3
chmod +x startup.sh 
chmod +x shutdown.sh 
chmod +x catalina.sh 
chmod +x setclasspath.sh 
chmod +x bootstrap.jar 
chmod +x tomcat-jni.jar 

espérons que cela fonctionnera.

-1

je pouvais le faire en exécutant cette commande,

$ service tomcat6 start

qui réinitialisée mon chemin CATALINA_* et commence l'instance tomcat

Questions connexes