同じサーバー(Linux)でTomcat 6の複数のインスタンスを実行していますが、期待どおりに機能します。 CATALINA_HOME
変数とCATALINA_BASE
変数の設定に関する標準的な慣行を確認しようとしています。
Tomcatのインストールでは、CATALINA_HOME
が「共通」フォルダー(たとえば[/Tomcat6
])を指すようにセットアップし、CATALINA_BASE
変数はインスタンス名(たとえば/Tomcat_instance1
、/Tomcat_instance2
)
私の質問はこれです:
CATALINA_HOME
を1つだけ使用してCATALINA_BASE
(またはその逆)を廃止できますか?単一のホストでTomcatの複数のインスタンスを実行している場合、CATALINA_BASE
を各インスタンスと.../Tomcat_instance1
環境に応じて.../Tomcat_instance2
またはCATALINA_HOME
ディレクトリと等しくなるように設定する必要があります。 2つのインスタンス間でファイルが共有される共通Tomcatインストールへの変数。
ホストで単一のTomcatインスタンスを実行している場合、CATALINA_BASE
環境はオプションであり、その場合はデフォルトでCATALINA_HOME
になります。複数のインスタンスを実行している場合は、提供される必要があります。
この設定の説明は、Apache TomcatディストリビューションのルートにあるRUNNING.txt
ファイルの見出し高度な設定-複数のTomcatインスタンスにあります。
CATALINA_HOME
vs CATALINA_BASE
複数のインスタンスを実行している場合は、両方の変数が必要です。それ以外の場合は、CATALINA_HOME
のみです。
つまり、CATALINA_HOME
は必須であり、CATALINA_BASE
はオプションです。
CATALINA_HOME
は、Tomcatインストールのルートを表します。
オプションで、Tomcatは、各インスタンスに
$CATALINA_BASE
を定義することにより、複数のインスタンスに対して構成できます。複数のインスタンスが構成されていない場合、$CATALINA_BASE
は$CATALINA_HOME
と同じです。
CATALINA_HOME
とCATALINA_BASE
を別々に実行することは、RUNNING.txtに文書化されています。
CATALINA_HOME
およびCATALINA_BASE
環境変数は、それぞれApache Tomcatの場所とそのアクティブな構成の場所を指定するために使用されます。
setenv
スクリプトでCATALINA_HOME
およびCATALINA_BASE
変数を構成することはできません。これらのファイルはそのファイルを見つけるために使用されるためです。
例えば:
(4.1)次のコマンドのいずれかを実行することにより、Tomcatを起動できます。
%CATALINA_HOME%\bin\startup.bat (Windows) $CATALINA_HOME/bin/startup.sh (Unix)
または
%CATALINA_HOME%\bin\catalina.bat start (Windows) $CATALINA_HOME/bin/catalina.sh start (Unix)
多くの場合、同じサーバー上の複数のユーザー間でTomcatバイナリ配布の単一のコピーを共有することが望ましいです。これを可能にするために、
CATALINA_BASE
環境変数を、「個人」Tomcatインスタンスのファイルを含むディレクトリに設定できます。個別の
CATALINA_HOME
とCATALINA_BASE
を使用して実行する場合、ファイルとディレクトリは次のように分割されます。
CATALINA_BASE
::
bin
-のみ:setenv.sh(* nix)またはsetenv.bat(Windows)、Tomcat-juli.jarconf
-サーバー構成ファイル(server.xmlを含む)lib
-以下で説明するライブラリとクラスlogs
-ログおよび出力ファイルwebapps
-自動的にロードされるWebアプリケーションwork
-Webアプリケーションの一時作業ディレクトリtemp
-JVMが一時ファイルに使用するディレクトリ>
CATALINA_HOME
::
bin
-起動およびシャットダウンスクリプトlib
-以下で説明するライブラリとクラスendorsed
-標準の「承認済み標準」をオーバーライドするライブラリ。デフォルトでは存在しません。
CATALINA_BASE
およびCATALINA_HOME
が何であるかを確認する最も簡単な方法は、startup.sh
を実行することです。次に例を示します。
$ /usr/share/Tomcat7/bin/startup.sh
Using CATALINA_BASE: /usr/share/Tomcat7
Using CATALINA_HOME: /usr/share/Tomcat7
以下のdpkg
ツール(Debian/Ubuntu)を使用して、Tomcatファイルがインストールされている場所を確認することもできます。
dpkg -L Tomcat7-common
私はベストプラクティスを知っているとは言えませんが、ここに私の視点があります。
yoこれらの変数を何かに使用していますか?
個人的には、LinuxでもWindowsでも、開発から実稼働までさまざまな環境で変更する必要はありません。あなたがそれらに依存する特定の何かをしているのでない限り、あなたはそれらを放っておける可能性があります。
catalina.sh
は、Tomcatがそのまま動作するために必要な変数を設定します。また、CATALINA_BASE
はオプションであることも示しています。
# 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.
サーバーの起動時にセットアップが機能するかどうかを確認できると確信しています。
CATALINA_BASE
をCATALINA_HOME
とは別のディレクトリにポイントすると、構成ディレクトリをバイナリディレクトリから分離できます。
デフォルトでは、CATALINA_BASE
(構成)とCATALINA_HOME
(バイナリ)は同じフォルダーを指しますが、構成をバイナリから分離すると、バイナリを複製せずにTomcatの複数のインスタンスを並べて実行できます。
また、Tomcatの構成ファイルを変更したり、バックアップ/復元する必要なく、バイナリを更新したい場合にも役立ちます。
makebase
ユーティリティを使用して、CATALINA_BASEを設定する簡単な方法があります。このテーマをカバーするチュートリアルを http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-Tomcat.html にビデオチュートリアルとともに投稿しました。 https://youtu.be/nuugoG5c-7M
この機能を利用するには、単にconfigディレクトリを作成し、CATALINA_BASE
環境変数でそれを指すようにします。そのディレクトリにいくつかのファイルを配置する必要があります。
conf
ディレクトリをその内容も含めてコピーし、Tomcatに読み取り権限があることを確認します。必要に応じて構成ファイルを編集します。conf/logging.properties
が${catalina.base}/logs
を指す場合はlogs
ディレクトリを作成し、Tomcatに読み取り/書き込み権限があることを確認します。$CATALINA_TMPDIR
を指すデフォルトの${CATALINA_BASE}/temp
をオーバーライドしない場合は、temp
ディレクトリを作成し、Tomcatが書き込み許可を持っていることを確認します。${CATALINA_BASE}/work
に設定されるwork
ディレクトリを作成し、Tomcatが書き込み許可を持っていることを確認します。CATALINA_BASEはオプションです。
ただし、次のシナリオでは、CATALINA_HOMEとは別のCATALINA_BASEをセットアップすると役立ちます。
Tomcatの複数のインスタンスが同じホストで実行されている場合
懸念の分離(単一責任)