Tomcat установлен с CATALINA_HOME в /usr/share/tomcat 6 и CATALINA_BASE в/var/lib/tomcat6

Я думаю, что это хороший вопрос.

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

в/usr/share/tomcat6/webapps/default_root/ at/var/lib/tomcat6/webapps/ROOT/

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

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

Цитата:

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

Ветераны Tomcat6 могут с удовольствием узнать, что этот системный экземпляр Tomcat установлен с CATALINA_HOME в /usr/share/tomcat 6 и CATALINA_BASE в /var/lib/tomcat 6 Итак, на основе этой информации папка /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.

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

(в начале)

CATALINA_HOME=/usr/share/$NAME

(то...)

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

Однако, если вы попытаетесь запустить TOMCAT вручную (как я делал давно), выполните следующие действия: sudo/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 устанавливается так же, как CATALINA_HOME?

/usr/share/tomcat6/logs/не существует, но существует в /var/lib/tomcat 6/logs/

Я вижу, что мои журналы записывают в /var/lib/... при запуске Tomcat из init.d script. Поэтому лучше начать его там.

Ответы

Ответ 1

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

Ответ 2

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

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

Ответ 3

Я это видел.

Правильным и симпатичным способом является создание "setenv.sh" script в вашей папке 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 выполнит его автоматически.

Ответ 4

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

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

Итак, в качестве обходного пути/взлома вы можете исправить проблему, добавив следующую строку в начале /usr/share/tomcat 6/bin/catalina.sh

export CATALINA_BASE=/var/lib/tomcat6

Ответ 5

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

$ service tomcat6 start

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

Ответ 6

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

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