我正在使用mod-wsgi和django,並且在Django中我使用pylucene來進行全文搜索。當mod_wsgi被配置爲守護進程模式時,jcc.initVM()不會返回
雖然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的/網站可用/默認:
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