「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」でアクセスできるはず。