我正在使用mod-wsgi和django,在django中我使用pylucene进行全文搜索。
当mod-wsgi被配置为嵌入模式时,没有任何问题。 但是当mod-wsgi被配置为守护进程模式时,apache会卡住, 浏览器一直在加载但是什么也没有出现。
然后我确定问题是jcc.initVM()。 以下是我的wsgi脚本:
意思是它在jcc.initVM()一行卡住了。(如果mod_wsgi配置为嵌入模式,则没有问题。)
下面是我的/etc/apache2/sites-available/default文件:
当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