私はdjangoでmod-wsgiを使用しており、djangoではピルセンを使用して全文検索を行っています。
mod-wsgi は組み込みモードに設定されていますが、まったく問題はありません。しかし、mod-wsgi がデーモン モードに設定されていると、Apache がスタックし、ブラウザはロードし続けますが、何も表示されません。
次に、問題が jcc.initVM() であることを特定します。これが私のwsgiスクリプトです:
import os, sys, jcc
sys.stderr.write('jcc.initVM\n')
jcc.initVM()
sys.stderr.write('finished jcc.initVM\n')
....
Apache を再起動し、ブラウザからリクエストを行った後、/var/log/apache2/error.log に次の情報しかないことがわかりました。
jcc.initVM
jcc.initVM() 行でスタックすることを意味します。(mod_wsgiが組み込みモードに設定されていれば問題ありません。)
そして、これが私の /etc/apache2/sites-available/default です:
WSGIDaemonProcess site user=ross group=ross threads=1
WSGIProcessGroup site
WSGIScriptAlias / /home/ross/apache/django.wsgi
<Directory /home/ross/apache/>
Order deny,allow
Allow from all
</Directory>
最後に、jcc のソース コード (jcc.cpp) で、次の関数でハングすることがわかりました。
JNI_CreateJavaVM(&vm, (void **) &vm_env, &vm_args)
問題を解決するには?
プログラムのバージョン:
libapache2-mod-wsgi 2.3-1
jcc 2.1
python 2.5
Apache 2.2.9-8ubuntu3
Ubuntu 8.10