2010年7月27日
ここでは、Apache2とTomcatの連携をしたサイトの構築時の備忘録です。
本サイトはHTMLファイルで作成されているかのように見えますが、実は、JSPで動いています。つまりTomcatが主体で動いているサイトです。そこで、第一に問題となるのがTomcatとApacheとの連携です。
以前は、mod_jkコネクトを使用して連携をはかるのが主流でしたが、現在は、AJPを使用するのが一般的なようで、私もAJPで連携しましたので、その方法を以下に記述します。
まず、Apacheの「httpd.conf」のファイルを編集します。
#LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so #LoadModule proxy_http_module modules/mod_proxy_http.so ↓コメントアウトします LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_http_module modules/mod_proxy_http.so |
上記をコメントアウトして使用するに当たって、Apacheのmodulesディレクトリ内にmod_proxy_http.so、mod_proxy_ajp.so、mod_proxy.soという.soのモジュールが含まれている必要があります。Red Hat系のLinuxのディレクトリでは、/usr/lib64/modules内にあります(x64の場合)。
次に、AJPのプロキシ設定ですが、私の場合、バーチャルホストを使用しており、また、後述しますが、AJPの書き換えを容易にするためにIncludeを使用して、別に.confファイルを用意しています。その場合のApacheのhttpd.confの設定ファイルの書き方です)。
DocumentRoot "/home/ユーザー/docs" ServerName www.fbijobs.jp:80 Include /home/ユーザー/conf/ajp.conf |
次に、ディレクトリ/home/ユーザー/conf/を作成し、そこにajp.confファイルを作成します。
ajp.confの記述は下記のように記述します。
ProxyPass /new ajp://localhost:8009/new ProxyVia On |
上記のnewは、「JSPによるTomcatの動作確認」で作成したnewというアプリケーション・ディレクトリにアクセスするためのもので、ajp://localhost:8009/newのnewは、Tomcat内のフォルダ名と一致していなければなりませんが、ProxyPass /newのnewとは一致している必要はなく別名での指定が可能です。すなわち、「ProxyPass /abcd ajp://localhost:8009/new」という指定方法が可能で、この場合のアクセスURLはhttp://localhost/abcd/となります。
なぜ、別々のconfファイルを作成するかというと、Tomcatに新しいアプリケーションフォルダを追加していくたびに、権限に制限があるディレクトリにあるhttpd.confでは、そこにアクセスして改編するのが煩雑です。
この方法を採ると、ユーザー自身の権限内にconfファイルがあるので、容易にProxyPass を増やしていくことができるためです。
ただし、Apacheがアクセスできなければならないので、ユーザーディレクトリを
# chown -R ユーザー:apache /home/ユーザー
# chmod -R 755 /home/ユーザー
としてディレクトリの権限とパーミションを変更しておく必要があります。
それでは、Tomcatを起動して、それからApacheを起動してください(逆だとエラーが発生することがあります)。
そして、http://localhost/new/test.htmlにアクセスすれば、アクセスが可能になったと思います。
AJPを使ってApacheとTomcatを連携さしている場合、Tomcat単体では文字化けが発生しなくても、連携させると文字化けが発生することがあります。(連携しなくても文字化けする場合は、[JSPによるTomcatの動作確認]を参照してください)。その場合、Tomcatのserver.xmlファイル内のAJPの設定値の箇所に「URIEncoding="UTF-8"」という設定を追記してください。なおRed hat系のTomcatでは既に設定がされています。記述内容は下記のとおりです。
URIEncoding="UTF-8"/> |
This site has nothing to do with FBI (Federal Bureau of Investigation).
I support activity of FBI.
If you want to look at a homepage of FBI, trace the following link.
https://www.fbi.gov/
https://www.fbijobs.gov/