web-dev-qa-db-ja.com

Tomcatのルートにアプリケーションをデプロイする

アプリケーションのwarファイルがあります。これをルートレベルで展開する必要があります。現在のURLはhttp://localhost:8080/war_name/application_nameです。

121
iamjustcoder

いくつかのオプションがあります:

  1. Tomcatからすぐに使用できるROOT/ディレクトリーを削除し、デプロイする前にwarファイルの名前をROOT.warに変更します。

  2. (例から)war_name.warとしてwarをデプロイし、conf/server.xmlcontext root を設定してwarファイルを使用します。

    <Context path="" docBase="war_name" debug="0" reloadable="true"></Context>
    

最初の方が簡単ですが、もう少し気味が悪いです。 2番目の方法は、おそらくよりエレガントな方法です。

200
Rob Hruska

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を確認してください!

31
Peter Perháč

これらの変更を加えた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>セクションに追加します

13
Sudheer Palyam

私の答えは他の答えの一部と重複していることはわかっていますが、これにはいくつかの利点がある完全なソリューションです。これはTomcat 8で機能します。

  1. メインアプリケーションはルートから提供されます
  2. Webインターフェイスを介したwarファイルの展開は維持されます。
  3. メインアプリケーションはポート80で実行されますが、管理者のみが管理フォルダーにアクセスできます(* nixシステムでは80にバインドするにはスーパーユーザーが必要ですが、Windowsではこれは問題ではありません)。

これは、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">に変更します。

9
KimvdLinde

$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に設定する必要があります。

5
Jingguo Yao

最速の方法。

  1. ROOTアプリがデプロイされていないことを確認し、存在する場合はアンデプロイします

  2. WARの名前をROOT.warに変更し、デプロイします。これで、構成を変更する必要はありません。

4
Dima

@Rob Hruskaのsolに追加すると、server.xmlのセクション内のこの設定は機能します。

<Context path="" docBase="gateway" reloadable="true" override="true"> </Context>

注:場合によっては、override = "true"が必要になる場合があります。

1
AVM