我在让 mod_wsgi 在我的 Debian / Apache 2.2.16 / Python 2.6.6 / mod_wsgi 3.3 / Django 1.3 设置上以守护进程模式运行时遇到问题。在嵌入式模式下一切正常,但是当我尝试像许多 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,我的设置是正确的。我可能会错过什么?
结果是符号链接设置不正确,所以我的配置更改从未加载到 Apache 中。抱歉浪费您的时间,我想我在发帖前已经彻底检查了所有内容。