Tomcat устанавливается с CATALINA_HOME в / usr / share / tomcat6 и CATALINA_BASE в / var / lib / tomcat6 - PullRequest
18 голосов
/ 10 августа 2010

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

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

в / usr / share / tomcat6 / webapps / default_root / в / var / 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.

Когда мы читаем по адресу: /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 / tomcat6 / logs /

Я вижу, что мои журналы записываются в / var / lib / ... при запуске Tomcat из сценария init.d. Так что лучше начать отсюда.

Ответы [ 6 ]

16 голосов
/ 23 июня 2011

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

4 голосов
/ 17 июля 2012

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

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

1 голос
/ 15 августа 2012

Я видел это.

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

0 голосов
/ 12 июня 2014

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

$ service tomcat6 start

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

0 голосов
/ 04 декабря 2012
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

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

0 голосов
/ 31 августа 2011

Я не могу сказать вам, почему 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
...