「Tomcat」Tomcat でバーチャルホスト

Tomcat でバーチャルホストを使用してみたので、その時のメモ。

ドキュメントは以下になるので、こいつを参考にやってみました。

Apache Tomcat 7 (7.0.54) - Virtual Hosting and Tomcat
http://tomcat.apache.org/tomcat-7.0-doc/virtual-hosting-howto.html

1. server.xml に Host 要素を追加する

バーチャルホスト名 "test" として、以下の Host 要素を追加する

 <Engine>
  - 略 -
  <Host name="test" appBase="testapps" unpackWARs="true" autoDeploy="true"></Host>
  - 略 -
 </Engine>


2. appBase に設定したディレクトリを作成する

mkdir $CATALINA_HOME/testapps


3. context.xml を作成する

ドキュメントには「approach #1」、「approach #2」とあるので 2 つやり方あるみたいだけど、今回は後者を採用した。

まず、$CATALINA_HOME/conf/Catalina 配下にバーチャルホスト名のディレクトリを作成する。

mkdir $CATALINA_HOME/conf/Catalina/test

次に、ROOT.xml を作成して、上記ディレクトリ配下に配置する。特に何もすることないので内容はほぼ空で。

<Context />

※ ホスト毎に manager アプリを使用した場合は、manager.xml をコピーすればいいみたいだけど、今回は特に必要ないのでやらないことに。


4. アプリケーションをデプロイする

2 で作成したディレクトリ $CATALINA_HOME/testapps に .war ファイル ( TestApp.war ) を配置する。


5. /etc/hosts ファイルを編集する

127.0.0.1 にバーチャルホスト名 "test" を追加する。

127.0.0.1 ***** test


上記で作業完了です。Tomcat を起動して「http://test:8080/TestApp」でアプリケーションにアクセスできるはずです。

以上です。

[ 環境情報 ]
CentOS 6.2
Apache Tomcat 7.0.52


■ 追加

上記だと「http://test:8080/TestApp」でアプリケーションにアクセスする必要があるけど、「http://test:8080/」みたいな感じでアクセスしたい場合は、

a. ROOT.xml を以下のように設定する

<Context docBase="${catalina.home}/test/TestApp.war" />

b. TestApp.war は appBase 以外のディレクトリに配置する ( 今回は $CATALINA_HOME/test ディレクトリ配下にした )。

※ b の理由はたぶんだけど、ドキュメントの以下の記載があるからだと思う。

Apache Tomcat 7 Configuration Reference (7.0.54) - The Context Container
http://tomcat.apache.org/tomcat-7.0-doc/config/context.html

 Locate the WAR and/or directory outside of the Host's appBase and use a context.xml file with a docBase attribute to define it.

これで「http://terst:8080」でアクセスできるはず。