Top > Blog Index > mod\_jk で apache と winstone を連携させる

mod_jk で apache と winstone を連携させる

apache の Virtual Host 設定下で、winstone との連携をすることにしたのでそのメモ。

手順

apxs がないのでインストール

$ su
# yum install yum install httpd-devel.i386

mod_jk のソースをダウンロードして make , mod_jk.so の配置

tomcat-connectors-1.2.30-src.tar.gzをここから入手。

$ cd native
$ ./configure --with-apxs=/usr/sbin/apxs
$ make

make が完了すると apache-2.0/mod_jk.so ができている。 これを apache のモジュールディレクトリ(/etc/httpd/modules/)にコピーする。

apache の設定

/etc/httpd/conf/httpd.conf を修正

1) mod_jk のモジュール追加記述

LoadModule    jk_module  modules/mod_jk.so
JkWorkersFile /etc/httpd/conf/workers.properties
JkLogFile     /var/log/httpd/mod_jk.log
JkLogLevel    info
#JkLogLevel    debug
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
#JkMount  /*.gsp ajp13
#JkMount  /* ajp13

JkMountはここでは設定しない。 Virtual Host の設定内で指定する。

JkLogLevel で debug としておくと、 ログ(ここでは、/etc/log/httpd/mod_jk.log)に大量のメッセージが出るため 設定中でトラブルシューティングしている場合は大変便利です。

2) workers.properties

JkWorkersFile で指定した場所に以下の内容で /etc/httpd/conf/workers.properties を配置。

workers.tomcat_home=/usr/local/winstone
workers.java_home=/usr/local/jdk
ps=/
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13

psはパスの区切り文字らしい。*unix では ps=/ でOK.

3) Virtual Host の設定

以下の指定をイキにする。

ServerName *:80

NameVirtualHost *:80

4) Virtual Host 関係の個別設定と JkMount設定

<VirtualHost *:80>
    ServerAdmin foo@sample.net
    DocumentRoot /var/www/vhost/blog
    ServerName blog.sample.net
    ErrorLog logs/www-error_log
    CustomLog logs/www-access_log common
    #JkMount  /*.gsp ajp13
    JkMount  /* ajp13
</VirtualHost>

JkMount の記述では、どのリクエストがきたら ajp13 へ渡すかを指定。 ここではすべてのリクエストを ajp13 へ転送(つまり全部 winstoneで処理する)。

winstone の起動設定

winstoneのドキュメント を参考に。

winstone の起動時に以下のオプションを指定して起動。

winstonejar=bin/winstone-0.9.10.jar

JAVACMD=java
JAVA_OPTS="-Xms48m -Xmx48m"

$JAVACMD $JAVA_OPTS -jar $winstonejar \
--javaHome=$JAVA_HOME \
--webroot=htdocs \
--httpPort=8080 \
--ajp13Port=8009 \
--useJasper \
#--logfile=logs/log

--ajp13Port=8009がポイント。いったんうまく作動したら --httpPort=-1 にすればよい。