アプリケーションのwarファイルがあります。これをルートレベルで展開する必要があります。現在のURLはhttp://localhost:8080/war_name/application_name
です。
いくつかのオプションがあります:
Tomcatからすぐに使用できるROOT/
ディレクトリーを削除し、デプロイする前にwarファイルの名前をROOT.war
に変更します。
(例から)war_name.war
としてwarをデプロイし、conf/server.xml
で context root を設定してwarファイルを使用します。
<Context path="" docBase="war_name" debug="0" reloadable="true"></Context>
最初の方が簡単ですが、もう少し気味が悪いです。 2番目の方法は、おそらくよりエレガントな方法です。
tomcat v.7(バニラのインストール)
conf/server.xmlで、ファイルの最後の</Host>
終了タグの直前に次のビットを追加します。
<Context path="" docBase="app_name">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
docBase属性に注意してください。それは重要なビットです。ルートWebアプリを変更する前にapp_nameをデプロイしたことを確認するか、解凍したwebapp(app_name)をTomcatのwebappsフォルダーにコピーします。スタートアップ、ルートにアクセスして、app_nameを確認してください!
これらの変更を加えたTomcat 7では、/ APPのmyAPPおよび/ ROOTのROOTにアクセスできます。
<Context path="" docBase="myAPP">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="ROOT" docBase="ROOT">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
上記をserver.xmlの<Host>
セクションに追加します
私の答えは他の答えの一部と重複していることはわかっていますが、これにはいくつかの利点がある完全なソリューションです。これはTomcat 8で機能します。
これは、Tomcatを一度再起動するだけでよく、更新されたwarファイルを問題なくデプロイできることを意味します。
手順1:server.xmlファイルで、コネクタエントリを見つけて、次のものに置き換えます。
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
ステップ2:<Host ...>
タグ内でコンテキストを定義します。
<Context path="/" docBase="CAS">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/ROOT" docBase="ROOT">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/manager" docBase="manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/Host-manager" docBase="Host-manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
Webappフォルダー内のすべてのアプリに対処したことに注意してください。最初は、ルートとメインアプリを位置から効果的に切り替えます。 ROOTはhttp://example.com/ROOT
にあり、メインアプリケーションはhttp://example.com/
にあります。パスワードで保護されているWebアプリには、privileged="true"
属性が必要です。
ルート(<Context path="/" docBase="CAS">
)と一致するCAS.warファイルをデプロイする場合、デプロイメントで更新されないため、管理パネルでそのファイルをリロードする必要があります。
<Context path="/CAS" docBase="CAS">
をコンテキストに含めないでください。warファイルをデプロイするためのマネージャーオプションが無効になります。これは、2つの方法でアプリにアクセスできることを意味します:http://example.com/
およびhttp://example.com/APP/
ステップ3:ルートおよびマネージャーフォルダーへの不要なアクセスを防ぐために、Valve
を次のようなコンテキストタグに追加します。
<Context path="/manager" docBase="manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Valve className="org.Apache.catalina.valves.RemoteAddrValve"
addConnectorPort="true"
allow="143\.21\.2\.\d+;8080|127\.0\.0\.1;8080|::1;8080|0:0:0:0:0:0:0:1;8080"/>
</Context>
これにより、管理者のWebアプリフォルダーへのアクセスは、デフォルトポート8080を使用する場合、自分のドメイン(偽のIPアドレス)およびlocalhostのユーザーに制限され、Webインターフェースを介してwarファイルを動的に展開する機能が維持されます。
異なるIPアドレスを使用している複数のアプリでこれを使用する場合は、IPアドレスをコネクタ(address="143.21.2.1"
)に追加できます。
ルートから複数のWebアプリを実行する場合は、サービスタグを複製し(2番目の名前に別の名前を使用)、<Context path="/" docBase="CAS">
のdocbaseをたとえば<Context path="/" docBase="ICR">
に変更します。
$CATALINA_HOME/webapps/ROOT
を削除します。 $CATALINA_HOME/conf/server.xml
を更新し、Host要素が次のテキストのように見えることを確認します。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false" deployOnStartup="false">
<Context path="" docBase="myApp"></Context>
Tomcat 8で動作します。TomcatがmyApp
を2回デプロイしないようにするには、autoDeployとdeployOnStartupをfalseに設定する必要があります。
最速の方法。
ROOTアプリがデプロイされていないことを確認し、存在する場合はアンデプロイします
WARの名前をROOT.warに変更し、デプロイします。これで、構成を変更する必要はありません。
@Rob Hruskaのsolに追加すると、server.xmlのセクション内のこの設定は機能します。
<Context path="" docBase="gateway" reloadable="true" override="true"> </Context>
注:場合によっては、override = "true"が必要になる場合があります。