web-dev-qa-db-ja.com

Tomcatは、/ usr / share / Tomcat6のCATALINA_HOMEおよび/ var / lib / Tomcat6のCATALINA_BASEとともにインストールされます

いい質問だと思います。

私もそれを混乱させた。数分前に(しばらくして)Tomcatをインストールしましたが、Tomcatは2つの異なる "webapps"の場所であることに気付きました。

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

両方の内容は同じですが、いずれもシンボリックリンクではありません。

Tomcatを起動すると、次のように表示されます。

見積もり:

これはデフォルトのTomcatホームページです。ローカルファイルシステムの/var/lib/Tomcat6/webapps/ROOT/index.htmlにあります。

Tomcat6のベテランは、このTomcatのシステムインスタンスが/ usr/share/Tomcat6のCATALINA_HOMEおよび/ var/lib/Tomcat6のCATALINA_BASEとともにインストールされることを知って喜んでいるでしょう。したがって、この情報に基づいて、/ usr/share/...フォルダー後方互換性のために保持されていましたよね?

しかし、あなたが投稿したライブラリによれば、ライブラリはCATALINA_BASEではなくCATALINA_HOMEから読み込まれています。

おそらく、更新後に他のシステムが動作しなくなるのを防ぐために、まだデフォルトの参照を保持していますか?

良い観察!

更新:

私はこれを/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

ただし、Sudo /usr/share/Tomcat6/bin/startup.shを使用してTomcatを手動で起動しようとすると(かなり前にしたように)

表示されます:

見積もり:

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 /に存在します

Init.dスクリプトからTomcatを起動すると、ログが/ var/lib/...に書き込まれていることがわかります。だからそこから始めたほうがいい。

18
chandrasekhar

私はTomcatの専門家ではありませんが、これと同じ問題を抱えていて、次のコマンドでサーバーを再起動することができました:Sudo /etc/init.d/Tomcat6 restart

16
Jeff Wu

CATALINA_HOME-「org.Apache.catalina.startup.Bootstrap」に、サーバーを実行するための依存関係である必要な/ lib/binおよびその他を探す場所を指示します。基本的に、Tomcatインストールのホームディレクトリです。

CATALINA_BASE-特定のディレクトリ構造がスキャンされることを期待します(一度開始される)。たとえば、/ confは、webアプリケーションに固有のserver.xmlおよびweb.xmlを検索します。そのディレクトリ構造とコンテンツがあれば、CATALINA_BASEはどのディレクトリでもかまいません。

4

私はそれを見ました。

適切でかわいい方法は、「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はそれを自動的に実行します。

1
Erik Kaju

Startup.sh(またはcatalina.sh)でCATALINA_HOMEとCATALINA_BASEが同じである理由を説明することはできません。これは本当に奇妙です。

もちろん、init.dスクリプトを使用してTomcatを起動できます。ただし、startup.sh/catalina.shを使用して起動することもできます(デバッグ用など)。

回避策/ハックとして、/ usr/share/Tomcat6/bin/catalina.shの先頭に次の行を追加することで問題を修正できます

export CATALINA_BASE=/var/lib/Tomcat6
0
Simson