我在Debian / Apache / Python2.6 / Django设置中让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,我的设置是正确的。我能错过什么?
编辑:仅供参考我的应用程序在嵌入式模式下正常运行,我只是想切换到守护进程模式,发现它没有使用上面的wsgi脚本激活。
答案 0 :(得分:1)
事实证明,未正确设置符号链接,因此我的配置更改从未在Apache中加载。很抱歉浪费你的时间,我以为我在发布之前已经彻底检查了一切。
答案 1 :(得分:0)
行mod_wsgi.process_group = ''
表示您仍在嵌入模式下运行(如您所知)。 mod_wsgi
守护程序模式无法在Apache 1.x
上运行,因此我假设您正在运行2.x
(正如您还要注意的那样)。
您可以尝试设置apache
LogLevel info
以便日志文件中有更多有用的信息。我也假设你强迫apache重启
# /etc/init.d/apache2 restart
在守护进程模式下这不是必需的,但如果您之前处于嵌入模式,则需要重新加载配置文件。