#インストール
デフォルトのパッケージ管理ツールで入れておく
今回設定はすべてserver.xmlで行うことを想定。
#appBase
Tomcatが扱うアプリケーションのトップディレクトリを指定する。
デフォルトだと**$CATALINA_HOME/webappで、LinuxMintはデフォルトだと/var/lib/tomcat7/webapps**となっている。
設定にもよるけど、ここにwarファイルを置いておけばTomcat起動時などに自動でwarを展開して配備してくれる。
URLは自動的にlocalhost:8080/warファイル名(.war無し)
となるので、ブラウザでアクセスしてみれば確認できる。
以下のように、Host
にappBase属性
として指定する。(ちなみに以下はデフォルト)
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<!--長い上に今回とは関係ないので省略-->
<!--ここのHostという部分が重要-->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<!--長い上に今回とは関係ないので省略-->
</Server>
#docBase(warの解凍後(ディレクトリ)の指定)
warを手動で解凍して配置したい場合や、warに固めず開発環境で開発しているままをサーバにアップロードして、そのままTomcatで動かしたい場合に利用するパターン。
Context
という要素をHost
に追記し、docBase属性
にそのディレクトリのフルパスを指定する。
path属性
に値を設定することでURLをデフォルトのwarファイル名から変更することができる。(今回の場合は/appAになる)
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<!--長い上に今回とは関係ないので省略-->
<!--ここのHostという部分が重要-->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!--これを追加-->
<!--/var/www/tomcattest/docBaseAというディレクトリにWebアプリを設置している-->
<Context path="/appA" docBase="/var/www/tomcattest/docBaseA" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<!--長い上に今回とは関係ないので省略-->
</Server>
なお、今回のサンプルのdocBaseAというディレクトリ自体をappBase
配下に配置すれば、ワザワザContext
を追記しなくてもデフォルトのままで問題ない。
最後のまとめに書くけど、URLを変更したい場合に、今回のようにContext
を追加してdocBase
にディレクトリ名を指定&path
を指定する必要がある。
#docBase(warの指定)
appBase
に指定したディレクトリ以外にwarファイルを設置したい場合、docBase
にそのwarファイルを直接指定することができる。
なお、warのデプロイ先(解凍先)はappBase
で指定されたディレクトリになり、作成されるティレクトリ名はpath
に指定されたものになる。(今回の場合はappB)
前述のディレクトリ名をdocBase
に指定するパターンと同じで、Context
という要素をHost
に追記し、docBase属性
にその対象のwarファイルをフルパスで指定する。
path属性
に値を設定することでURLをデフォルトのwarファイル名から変更することができる。(今回の場合は/appBになる)
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<!--長い上に今回とは関係ないので省略-->
<!--ここのHostという部分が重要-->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!--これを追加-->
<!--appBase外にwarファイルを配置でき、URLも任意に変更できる-->
<Context path="/appB" docBase="/var/www/tomcattest/myApp.war" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<!--長い上に今回とは関係ないので省略-->
</Server>
#まとめ
基本的にdocBaseは使わないほうがいいと思う。混乱の元になりそう。
docBaseを使うメリットとしては、Tomcatだけで複数のアプリケーションを扱いたい場合に、URLをwarファイル名じゃなくて任意のものに変更することができる点だと思う。
ただ、Apacheなどと連携する場合、Apache側でそのURLの指定ができるので、その場合にはdocBaseを使うメリットは無い。と思う。。。