Eclipseで、Tomcat上のWebアプリをルートに配備する方法

Eclipse上で、Tomcatのプラグインを利用して作成したWebアプリケーションをルート(ドメイン直下)で公開することになったので、その時の設定を備忘的に書いておきます。

Tomcatでは、「Tomcatインストールフォルダconf」の下に、「server.xml」というファイルがあり、その中の

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

という箇所でデフォルトで読み込むWebアプリのディレクトリを定義しています。

つまり、このフォルダ配下にあるWebアプリを自動的に読み込む設定になっています。

このフォルダには、TomcatをWebベースで管理するアプリケーション「ROOT」があり、それがドメイン直下のコンテキストで公開されているので、これを置き変えてあげる必要があります。

そのため以下の手順で作業を行いました。

作業手順

「Tomcatインストールフォルダwebapps」に入っている「ROOT」フォルダを「ROOT2」にリネーム。
Eclipseのプロジェクトのプロパティで、「Tomcat⇒全般」の「コンテキスト名」を「ROOT」に変更。
Eclipseのプロジェクトのプロパティで、「Tomcat⇒WAR エクスポート設定」の「エクスポートするWARファイル」の.war名も「ROOT.war」に変更。
ると、「TomcatインストールフォルダconfCatalinalocalhost」にある、変更したいWebアプリの定義ファイルが「ROOT.xml」に変わっているはず。

以上で、「localhost:8080/」のようにルートのURLで自分のWebアプリにアクセスできるようになります。

TomcatとApacheの連携の設定変更

なお、私はTomcatとApacheを連携させるようにしています。

これは、画像やhtml、cssなどの静的なリソースは、Tomcatにハンドリングさせるのではなく、Apacheで処理した方がパフォーマンスが向上するためです。

なので、上記の変更に伴い、Apache側のTomcat連携用のファイル「httpd-proxy.conf」の中身も、以下のように変更しました。

ProxyPass /resource/ !
ProxyPass / ajp://localhost:8009/

一行目は、Apacheのhtdocsフォルダの中の「resource」フォルダ配下に対するリクエストはTomcatに連携しないという設定です。

なお、resourceフォルダには、Apache側に処理させたい静的なファイルを一式置いておきます。

二行目は、それ以外のルートURLへのリクエストはTomcatに連携しますよという設定です。