conf /server.xml内のTomcat構成ファイルappBaseおよびdocBase
Tomcat Configuration File Appbase
序文
最近、Tomcatでアプリを構成してデプロイしたときに、主に${CATALINA_HOME}/conf/server.xml
についていくつかの落とし穴を踏みました。構成ファイル内のホストノードプロパティappBase、およびホストノード子ノードのプロパティContext> docBase。
プロジェクトをApp1.warパッケージに入力し、warパッケージをtomcatの関連ディレクトリにアップロードして、デプロイメントを開始しました。
展開計画
1.デフォルト構成。conf/ server.xmlファイルを変更しないでください
戦争パッケージを直接${CATALINA_HOME}/webapps/
に渡しますディレクトリ、tomcatを開始した後、tomcatはこのwebappsディレクトリでwarを自動的に解凍してデプロイします。
たとえば、App1.warをwebappsディレクトリに配置した後、tomcatはApp1.warをwebapps / App1ディレクトリに抽出してデプロイします。
これがデフォルトの構成です。コンテキストサブノードは追加されません。 Tomcatがwarパッケージを抽出するのは非常に便利です。
2. conf / server.xmlファイルを変更し、Contextノードを追加して、docBase =“ App1”を設定します(エラーの例)。
App1.warパッケージを${CATALINA_HOME}/webapps/
に渡しますディレクトリを作成し、conf / server.xmlファイルを変更し、コンテキストノードを追加して、コンテキストノードのプロパティを指定しますdocBase=“App1”
。
プログラム1からわかるように、App1.warは自動的にApp1ディレクトリに抽出されるため、docBaseをApp1に設定するのが自然なようです。
ただし、これにはホストノードによって指定されたピットがあります。appBase=“webapps”
そしてApp1はwebappsディレクトリにあるため、TomcatはappBaseに従ってApp1を1回ロードします。
Context子ノードが再度設定されます。docBase=“App1'
このとき、tomcatはdocBaseに従ってApp1を再度ロードします。これは、App1が2回ロードされるのと同じです。
これにより、次のような多くの不可解な問題が発生する可能性があります。特定の時間指定タスクが2回実行されると同時に、ログが前日のファイルにヒットする可能性があるなど。
3. conf / server.xmlファイルを構成し、Contextノードを追加し、非WebアプリケーションのサブディレクトリとしてdocBaseを指定します(推奨)
- 新規
${CATALINA_HOME}/mybapps/App1
目次 - conf / server.xmlファイルを変更し、コンテキストノードを構成し、
docBase=“${CATALINA_HOME}/myapps/App1”
ここで${CATALINA_HOME}
を指定します。 Tomcatのパスをインストールし、使用する場合は絶対パスに置き換えます - App1.warを
${CATALINA_HOME}/mybapps/App1/
に入れます内容の下 - コマンドによる
jar xvf App1.war
warパッケージを現在のディレクトリに解凍します - Tomcatを開始します
- 後続のwarパッケージが更新されたら、ステップ3と4を繰り返します。ステップ5を実行する必要はなく、tomcatは自動的に再デプロイします。
注:docBaseは絶対パスに設定する必要があります
シナリオ3の構成例
conf / server.xmlファイルのホストノード:
... ...
総括する
conf /server.xmlのホストノードのappBaseによって指定されたディレクトリ。
- このディレクトリの下のサブディレクトリは、アプリケーションとして自動的に展開されます。
- このディレクトリの下の.warファイルは自動的に解凍され、アプリケーションとしてデプロイされます。
DocBaseは、アプリケーションを指す単なるディレクトリであり、appBaseとは関係ありません。特に、docBaseがwebappsの下のディレクトリを指している場合、アプリが2回読み込まれ、奇妙な問題が発生します。