我在 Debian / Apache 2.2.16 / Python 2.6.6 / mod_wsgi 3.3 / Django 1.3 设置中无法让 mod_wsgi 以守护进程模式运行。在嵌入模式下一切正常,但当我尝试切换到守护进程模式(如许多 HOWTO 中所述)时,它根本无法激活(environ['mod_wsgi.process_group']
始终返回空字符串,但没有输出任何错误)。
WSGIPythonPath
此外,使用指令或python-path
选项设置 python 路径WSGIDaemonProcess
似乎有效 -sys.path
在 wsgi 脚本中输出总是返回原始系统 python 路径。
我读过有关配置和调试 mod_wsgi 的文章,但我似乎被困在这里,所以任何帮助都将不胜感激!
在我的虚拟主机配置文件中
<VirtualHost *:80>
ServerName mysite.com
WSGIDaemonProcess mysite.com processes=2 threads=15
WSGIProcessGroup mysite.com
WSGIScriptAlias / /path/to/mysite/wsgi/django.wsgi
<Directory /path/to/mysite/wsgi/>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
设置。为了测试守护进程模式的激活,我使用这个 wsgi 脚本:
import sys
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
def application(environ, start_response):
print >> sys.stderr, 'mod_wsgi.process_group = %s' % repr(environ['mod_wsgi.process_group'])
from django.core.handlers.wsgi import WSGIHandler
_application = WSGIHandler()
return _application(environ, start_response)
并且生成的日志文件总是显示:
mod_wsgi.process_group = ''
根据文档,这表明未使用守护进程模式。我多次检查了我的设置,Apache、mod_wsgi 和 Python 的版本是匹配的,并且根据我读过的所有 HOWTO,我的设置是正确的。我可能遗漏了什么?
答案1
结果是符号链接设置不正确,所以我的配置更改从未加载到 Apache 中。很抱歉浪费了您的时间,我以为我在发布之前已经彻底检查了所有内容。