2010-08-10 1 views
17

Я думаю, что это хороший вопрос.Tomcat установлен с CATALINA_HOME в/usr/share/tomcat6 и CATALINA_BASE в/var/lib/tomcat6

Я нашел это также запутанным. Я установил tomcat несколько минут назад (через некоторое время), и я заметил, что они представляют собой два разных сайта «webapps».

в/USR/доли/tomcat6/WebApps/default_root/ в/вар/Lib/tomcat6/WebApps/ROOT/

Содержание обоих одинаковы, но ни один из них не символьные ссылки.

Когда я начал кота он говорит:

Цитата:

Это Tomcat домашняя страница по умолчанию. Он может быть найден в локальной файловой системе по адресу: /var/lib/tomcat6/webapps/ROOT/index.html

ветеранов Tomcat6 может быть приятно узнать, что эта система экземпляра Tomcat установлен с CATALINA_HOME в/USR/share/tomcat6 и CATALINA_BASE в/var/lib/tomcat6 Итак, на основе этой информации папка/usr/share/... была сохранена для обратной совместимости, не так ли?

Но в соответствии с тем, что вы опубликовали, libs считываются из CATALINA_HOME вместо CATALINA_BASE.

Возможно, они по-прежнему сохраняют эту ссылку по умолчанию, чтобы другие системы перестали работать после обновления?

Хорошее наблюдение!

UPDATE:

Я прочитал это на: /usr/share/tomcat6/bin/catalina.sh:

Цитата:

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

Когда мы читаем:/и т.д. /init.d/tomcat6:

(в начале)

CATALINA_HOME=/usr/share/$NAME 

(то ...)

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

Однако, если вы попытаетесь запустить Tomcat вручную (как я сделал давно) с: Судо /usr/share/tomcat6/bin/startup.sh

Он показывает:

Цитата:

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 

Итак, почему здесь CATALINA_BASE устанавливается на такой же, как C ATALINA_HOME?

/USR/доли/tomcat6/журналы/не существует, но существует в/вар/Библиотека/tomcat6/журналы/

Я вижу, что мои журналы записи в/вар/Библиотека/... когда запуск Tomcat из сценария init.d.Поэтому его лучше начать с этого.

ответ

16

Я не эксперт по Tomcat, но у меня была эта же проблема, и я был в состоянии перезагрузить сервер с помощью команды: sudo /etc/init.d/tomcat6 restart

0

Я не могу сказать вам, почему CATALINA_HOME и CATALINA_BASE одинаковы в startup.sh (соответственно catalina.sh) - это действительно странно.

Конечно, вы можете запустить Tomcat с помощью скрипта init.d. Но иногда вы можете запустить его через startup.sh/catalina.sh (например, для отладки).

Так как обходной путь/хак вы можете исправить эту проблему, добавив следующую строку в начале /usr/share/tomcat6/bin/catalina.sh

export CATALINA_BASE=/var/lib/tomcat6 
3

CATALINA_HOME - рассказывает «орг. apache.catalina.startup.Bootstrap ", где искать требуемые/lib/bin и другие - которые зависят от запуска сервера. Это, в основном, ваш домашний каталог установки Tomcat.

CATALINA_BASE - ожидает, что определенная структура каталогов будет проверяться (после запуска). Например/conf, чтобы найти server.xml и web.xml, который специфичен для веб-приложения. пока у вас есть эта структура каталогов и контент, CATALINA_BASE может быть любой директорией.

1

Я видел это.

Правильный и симпатичный способ - создать сценарий «setenv.sh» в вашей папке CATALINA_HOME/bin (в вашем случае «/usr/share/tomcat6/bin/setenv.sh»).

Содержимое вашего setenv.sh:

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

Таким образом, нет никакой необходимости изменять catalina.sh самостоятельно. Если setenv.sh присутствует в каталоге bin, catalina.sh выполнит его автоматически.

-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 

надеюсь, что это будет работа.

-1

Я мог бы сделать это, выполнив эту команду,

$ service tomcat6 start

который инициализируется мой CATALINA_* путь и запускает экземпляр TOMCAT