XAMPPを使用してApache+Tomcatの環境を作成する。(XAMPPのバージョンは1.7.3)
手順
- XAMPPをインストールする。インストーラを落として実行するだけなので省略。
- XAMPPアドオンをインストールする。Tomcatは「xamppインストールフォルダ\tomcat\」以下にインストールされる。
- 「XAMPP Control Panel」から「Apache」と「Tomcat」を起動。ちなみにTomcatをスタンドアロンで動かしたい場合は「Tomcat」のみを起動する(デフォルトではポート番号は8080になっている)。
- おわり
まさか!これで終わり!?
「 http://localhost/examples/ 」にアクセスすると、「 http://localhost:8080/examples/ 」と同様の画面が表示されるようになっている。確かに連携されている。…いや、「examples」だけ特別に連携する設定がされているのかもしれない。
ためしに「xamppインストールフォルダ\tomcat\webapps\」に「unko」というフォルダを用意し、サンプルとして「index.jsp」を設置。内容は以下。
1 2 3 4 5 6 7 8 9 |
<%@ page contentType="text/html;charset=UTF-8" %> <html> <head> <title>Hello Unko?</title> </head> <body> <h1><%= "Hello Unko!!!" %></h1> </body> </html> |
しかる後「 http://localhost/unko/ 」にアクセスしてみたが、やはりちゃんと表示されていた。こりゃすごい。当然、ポート8080(Tomcatスタンドアロン)を指定しても同様に表示される。
Tomcat起動時に「xamppインストールフォルダ/tomcat/conf/auto/mod_jk.conf」を自動で上書きしているため、こういうことになっているようだ。このファイルをApacheで読み込む設定になっている。
Tomcatのポートを塞ぐ
ところで、このままではApacheとの連携はできてはいるが8080番ポートでもアクセスできてしまう。Tomcatの8080を塞ぐ場合は、「xamppインストールフォルダ\tomcat\conf\server.xml」の、以下の記述をコメントアウトすればよい。
1 2 3 4 |
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="20000" redirectPort="8443" /> |
バーチャルホストの設定 その1
前述の「xamppインストールフォルダ\tomcat\conf\auto\mod_jk.conf」は、デフォルトではlocalhost用の設定しかされていない。以下のような設定があるはずなので…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<VirtualHost localhost> ServerName localhost JkMount /examples ajp13 JkMount /examples/* ajp13 JkMount /host-manager ajp13 JkMount /host-manager/* ajp13 JkMount /unko ajp13 JkMount /unko/* ajp13 JkMount /docs ajp13 JkMount /docs/* ajp13 JkMount /manager ajp13 JkMount /manager/* ajp13 </VirtualHost> |
これをコピーし、ホスト名の部分を書き換え、公開するWebアプリの記述だけを残したものを、Apache側の設定ファイルである「xamppインストールフォルダ\apache\conf\extra\httpd-vhosts.conf」に書き足す。
1 2 3 4 5 |
<VirtualHost *.80> ServerName samplehost JkMount /unko ajp13 JkMount /unko/* ajp13 </VirtualHost> |
そうすることで外部からアクセスしたときにもWebアプリが表示されるようになる。
バーチャルホストの設定 その2
URLのルートにWebアプリを表示したい場合は、上記その1のことは無かったことにする。
- 「xamppインストールフォルダ\apache\conf\httpd.conf」を開き、以下のコメントアウトを解除する。
12LoadModule rewrite_module modules/mod_rewrite.soLoadModule proxy_ajp_module modules/mod_proxy_ajp.so - 「xamppインストールフォルダ\apache\conf\extra\httpd-vhosts.conf」に以下の設定を追加。
12345<VirtualHost *:80>ServerName samplehostRewriteEngine OnRewriteRule ^/(.*) ajp://localhost:8009/unko/$1 [L,P]</VirtualHost>
これでOK。
もしくは、C:\xampp\tomcat\webapps 以下のフォルダを全部消し、C:\xampp\tomcat\webapps\ROOT に対象のアプリを設定する。TomcatのROOTは「/ROOT」というコンテキスト名ではなくルートコンテキストを示すため。
追記
XAMPP 1.7.3 の時は上記の通りだったが、1.7.4ではアドオンなしで最初からTomcat 7.0.3もインストールされるようになった。でも、XAMPP Control PanelからTomcat開始・終了のボタンが消えた。
サービスの登録(管理者権限で行うこと)
1 2 |
cd C:\xampp\tomcat\bin service.bat install |
サービスの解除(同上)
1 2 |
cd C:\xampp\tomcat\bin service.bat remove |
追記2
1.8.1を入れてみたところControl PanelにTomcatが復活していた。