技術的雑談-mod_jk2でログも出ずにエラー500
環境
Tomcat4.1 + mod_jk2 + apache2.0
現象
- tomcat単体のwebサーバ、アプリケーションサーバとしては正常動作
- apache2.0は正常動作
- でも、mod_jk2をonにしてapache経由でTomcatにアクセスするとInternal Server Error(500)になる
- apacheのerror log(FreeBSDのport www/apache2のデフォルトだと/var/log/httpd-error.log)ファイルに以下のようなlogが出る
[Wed Jul 27 23:35:44 2005] [notice] jk2_init() Found child 14444 in scoreboard slot 8 [Wed Jul 27 23:35:44 2005] [error] shm.create(): error opening file /var/log/jk2.shm 13 Permission denied [Wed Jul 27 23:35:44 2005] [error] shm.create(): error mmapping /var/log/jk2.shm [Wed Jul 27 23:35:44 2005] [notice] workerEnv.init() ok /usr/local/etc/apache2/workers2.properties [Wed Jul 27 23:35:45 2005] [error] workerEnv.init() create slot epStat.0 failed [Wed Jul 27 23:35:45 2005] [error] lb.service() worker failed 120000 for ajp13:localhost:8009 [Wed Jul 27 23:35:45 2005] [error] lb.service() unrecoverable error... [Wed Jul 27 23:35:45 2005] [error] mod_jk.handler() Error connecting to tomcat 120000
shm.create(): error opening file /var/log/jk2.shm 13 Permission denied
- /var/log/jk2.shm(mod_jk2設定ファイルで設定されたmod_jk2のlogファイル)が存在しない
原因
mod_jk2のlogファイルが存在しない、もしくは存在予定のディレクトリがapacheの実行ユーザで書き込みアクセスできないpermissionになっているためです。
mod_jk2のlogファイルの位置は設定ファイル(〜.properties)で以下の行で設定されます。
[shm:] file=/var/log/jk2.shm size=1000000 disabled=0
また、mod_jk2の設定ファイルはhttpd.conf(portのデフォルトだと/usr/local/etc/apache2/httpd.conf)で以下のように設定されているはずです。
JkSet config:file ${serverRoot}/etc/apache2/workers2.properties
対処
mod_jk2のlogファイルがあるべき場所に空のlogファイルを作ってあげましょう。
#touch /var/log/jk2.shm ←ファイルの作成 #chown www:www /var/log/jk2.shm ←apacheの実行ユーザーで書き込みできるように
この後、apacheを再起動します。
#apachectl restart
履歴
2005/7/27 -- 初版
技術的雑談へ戻る