0

我在我的 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 脚本激活。

4

2 回答 2

1

事实证明,符号链接设置不正确,因此我的配置更改从未加载到 Apache 中。很抱歉浪费您的时间,我以为我在发布之前已经彻底检查了所有内容。

于 2013-02-19T16:14:49.650 回答
0

该行mod_wsgi.process_group = ''暗示您仍在嵌入式模式下操作(如您所见)。mod_wsgi守护程序模式将不起作用,Apache 1.x因此我假设您正在运行2.x(正如您也注意到的)。

你可以尝试设置apache

LogLevel info

以便在日志文件中有更多有用的信息。我还假设您已强制 apache 重新启动

# /etc/init.d/apache2 restart

在守护进程模式下这应该不是必需的,但如果您之前处于嵌入式模式,则需要重新加载配置文件。

于 2013-02-19T11:37:30.963 回答