tomcat-CATALINA_BASEおよびCATALINA_HOME変数


97

同じサーバー(Linux)で実行されているtomcat 6の複数のインスタンスがあり、期待どおりに動作します。CATALINA_HOMECATALINA_BASE変数の設定に関して、標準的な方法は何かを見つけようとしています。

私のTomcatのインストールでは、私が持っている設定CATALINA_HOME「共通」のフォルダ(たとえばを指すようにする/tomcat6)とCATALINA_BASE、変数は、インスタンス名によって異なります(と言います/tomcat_instance1/tomcat_instance2

私の質問はこれです:

  • 本当に2つの変数が必要ですか?
  • または、私は1つだけを持っCATALINA_HOMEて、CATALINA_BASE(またはその逆)を廃止 できますか?

3
質問自体は本当に答えです。
Koray Tugay 14年

4
これを行う必要がある理由は、Tomcatソフトウェア(にある$CATALINA_HOME)の保守と、Tomcatインスタンスの構成とコンテンツ(にある)の保守を分離するためです$CATALINA_BASE
reinierpost 2015

回答:


106

単一のホストでTomcatの複数のインスタンスを実行している場合は、インスタンスごとにまたはディレクトリにCATALINA_BASE等しくなるように設定し、2つのインスタンス間でファイルを共有する共通のTomcatインストールに環境変数を設定する必要があります。.../tomcat_instance1.../tomcat_instance2CATALINA_HOME

CATALINA_BASEあなたがホスト上の単一のTomcatインスタンスを実行していてがデフォルトになります場合環境はオプションでCATALINA_HOME、その場合には。そのまま複数のインスタンスを実行している場合は、それを指定する必要があります。

この設定のかなり良い説明はRUNNING.txt、Apache Tomcatディストリビューションのルートにあるファイルの「詳細設定-複数のTomcatインスタンス」という見出しの下にあります。


1
Ubuntuでパッケージ化されたTomcatを使用すると、2番目の段落が正しくありません。Tomcatソフトウェア($ CATALINA_HOME内)をTomcatインスタンス($ CATALINA_BASE内)から適切に分離します。
reinierpost 2016

84

CATALINA_HOMECATALINA_BASE

複数のインスタンスを実行している場合は、両方の変数が必要CATALINA_HOMEです。それ以外の場合のみ必要です。

つまり、:CATALINA_HOMEは必須でCATALINA_BASEあり、オプションです。

CATALINA_HOME Tomcatインストールのルートを表します。

オプションで、Tomcatは、インスタンス$CATALINA_BASEごとに定義することにより、複数のインスタンスに対して構成できます。複数のインスタンスが構成されていない場合$CATALINA_BASEは、と同じ$CATALINA_HOMEです。

参照:Apache Tomcat 7-はじめに

別々に実行しているCATALINA_HOMECATALINA_BASE言っているRUNNING.txtに記載されています:

CATALINA_HOMEおよびCATALINA_BASE環境変数は、それぞれのApache Tomcatの位置およびその活性コンフィギュレーションの場所を指定するために使用されます。

あなたは、設定することはできませんCATALINA_HOMECATALINA_BASEで変数 setenv彼らはそのファイルを見つけるために使用されているので、スクリプト。

例えば:

(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インスタンス

多くの状況では、Tomcatバイナリ配布の単一のコピーを同じサーバー上の複数のユーザー間で共有することが望ましいです。これを可能にCATALINA_BASE するために、「個人的な」Tomcatインスタンスのファイルを含むディレクトリに環境変数を設定できます。

とを別々に実行するCATALINA_HOMECATALINA_BASE、ファイルとディレクトリは次のように分割されます。

CATALINA_BASE

  • bin -のみ:setenv.sh(* nix)またはsetenv.bat(Windows)、tomcat-juli.jar
  • conf -サーバー構成ファイル(server.xmlを含む)
  • lib -以下で説明するライブラリとクラス
  • logs -ログと出力ファイル
  • webapps -自動的に読み込まれるWebアプリケーション
  • work -Webアプリケーションの一時作業ディレクトリ
  • temp -JVMが一時ファイルに使用するディレクトリ>

CATALINA_HOME

  • bin -起動およびシャットダウンスクリプト
  • lib -以下で説明するライブラリとクラス
  • endorsed-標準の「推奨標準」を上書きするライブラリ。デフォルトではありません。

確認方法

あなたの何をチェックする最も簡単な方法CATALINA_BASECATALINA_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

8
これは受け入れられたはるかに良い答えです。とてもよく説明されました。
dkanejs 2016

異なるCATALINA_BASEで複数のTomcatインスタンスを開始する方法を説明してください。
マーク

CATALINA_BASEおよびCATALINA_HOMEはシステム変数として設定する必要があります:Windows:set CATALINA_BASE = path
Mark

11

ベストプラクティスを知っているとは言えませんが、これが私の見方です。

しているあなたは何のためにこれらの変数を使用していますか?

個人的には、LinuxでもWindowsでも、開発から本番までさまざまな環境で変更する必要はありません。それらに依存する何か特別なことをしているのでない限り、それらをそのままにしておく可能性があります。

catalina.shTomcatがそのまま動作するために必要な変数を設定します。それ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.

サーバーを起動すると、セットアップが機能するかどうかがわかると思います。


tomcatの両方のインスタンスのファイルにcatalina_homeパスを設定できます\bin\catalina.shか?
Giri

8

ポインティングCATALINA_BASEから別のディレクトリにCATALINA_HOMEあなたがバイナリディレクトリから設定ディレクトリを分離することができます。

デフォルトでは、CATALINA_BASE(構成)とCATALINA_HOME(バイナリ)は同じフォルダを指しますが、構成をバイナリから分離すると、バイナリを複製することなく、Tomcatの複数のインスタンスを並べて実行できます。

また、Tomcatの構成ファイルを変更したり、バックアップ/復元したりすることなく、バイナリを更新する場合にも役立ちます。

2018年の更新

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インストールディレクトリから、その内容を含めてディレクトリをコピーし、Tomcatがそのディレクトリへの読み取り権限を持っていることを確認します。必要に応じて構成ファイルを編集します。
  • がを指しているlogs場合は、ディレクトリを作成し、Tomcatに読み取り/書き込み権限があることを確認します。conf/logging.properties${catalina.base}/logs
  • 作成tempあなたはデフォルトの上書きされていない場合は、ディレクトリを$CATALINA_TMPDIRポイントに${CATALINA_BASE}/temp、とTomcatがそれに書き込み権限を持っていることを確認してください。
  • workデフォルトでとなるディレクトリを作成し、${CATALINA_BASE}/workTomcatに書き込み権限があることを確認します。

1

CATALINA_BASEはオプションです。

ただし、以下のシナリオでは、CATALINA_HOMEとは別のCATALINA_BASEをセットアップすると役立ちます。

  1. tomcatの複数のインスタンスが同じホストで実行されている場合

    • これにより、tomcatインストールのランタイムが1つだけになり、複数のCATALINA_BASEサーバー構成が別々のポートで実行されます。
    • パッチまたはバージョンのアップグレードが必要な場合は、1つのインストール変更のみが必要か、テスト/検証/サインオフが必要です。
  2. 関心の分離(単一の責任)

    • Tomcatランタイムは標準であり、すべてのリリースプロセスで変更されるわけではありません。つまり、Tomcatバイナリ
    • リリースプロセスにより、webアプリケーション(webappsフォルダー)、環境設定(confディレクトリー)、logs / temp / workディレクトリーなどが追加される場合があります。

-5

これは、tomcat.exeファイルを含むbinの親フォルダーです。

CATALINA_HOME='C:\Program Files\Apache Software Foundation\Tomcat 6.0'

CATALINA_BASEと同じCATALINA_HOMEです。


2
あなたの答えは誤解を招く...正しい答えは述べる必要があります複数のインスタンスが構成されていない場合、$ CATALINA_BASEはドキュメントに
Eddie B

1
CATALINA_BASEは、ルートインスタンスを実行する場合にのみ、CATALINA_HOMEと等しくなります。複数のインスタンスがある場合は異なります。
スプラチ2015

1
インスタンスが1つしかない場合でも、CATALINA_BASEとCATALINA HOMEは異なるはずです。これにより、コンテンツがインストールから分離されます。たとえば、/ usr / share / tomcatの
CATALINA_HOME

番号。マルチインスタンスの場合、同じ場合もありますが、同じでない場合もあります。
Andrey Regentov
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.