Ubuntu 16.04 LTS を想定。 例えば hoge.kojion.com と fuga.kojion.com にそれぞれアプリをデプロイする場合を考える。 昨日の記事までの Tomcat 及び Apache 連携の設定は既に済んでいるものとする。
Tomcat 側の設定
sudo vi /etc/tomcat8/server.xml
以下のように <Engine>
内に必要な分だけの <Host>
を用意する:
<Engine>
...
<Host name="hoge.kojion.com" appBase="hogeapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="hoge_access_log" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="fuga.kojion.com" appBase="fugaapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="fuga_access_log" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
上記の設定でログが /var/log/tomcat8
に指定した prefix, suffix の形式で吐かれることになる。
この後 hogeapps
ディレクトリと fugaapps
ディレクトリを用意する (以下 fugaapps
の操作は hogeapps
と同様とする):
sudo cd /var/lib/tomcat8
sudo mkdir hogeapps
sudo chmod 777 hogeapps
sudo chown tomcat8.tomcat8 hogeapps
上記で作成した appBase
のディレクトリにはこの後置く war ファイルが展開されて置かれる。
次に各ホストに対する設定ファイルを置く:
sudo cd /var/lib/tomcat8/conf/Catalina
sudo mkdir hoge.kojion.com
sudo vi hoge.kojion.com/ROOT.xml
以下に指定する docBase
のディレクトリは任意の場所で良い (一般的に /home
が置きやすいだろうということでそうしている):
<Context docBase="/home/user/hoge/ROOT.war"/>
後はこの docBase
に指定したディレクトリに war ファイルを置けば、対象 URL に初回アクセスした際に appBase
に war ファイルを展開してくれる。
ROOT
というコンテキスト名にするとルートディレクトリへのアクセスで対象アプリが駆動する。
例えば http://hoge.kojion.com/hage
で hage アプリが動作してほしい場合は war ファイル名を変更すれば良い:
sudo vi hoge.kojion.com/hage.xml
<Context docBase="/home/user/hoge/hage.war"/>
Apache 側の設定
sudo vi /etc/apache2/sites-available/hoge.conf
バーチャルホスト毎に設定ファイルを用意すれば良い:
<VirtualHost *:80>
ServerName hoge.kojion.com
...
<Location />
ProxyPass ajp://localhost:8009/
Order allow,deny
Allow from all
</Location>
</VirtualHost>
最後に sudo service tomcat8 restart
と sudo service apache2 restart
し、試しに war ファイルを置いて http://hoge.kojion.com
にアクセスして正しくアプリが稼働するのを確認する。