让django使用apache / mod_wsgi ...任何想法?

时间:2011-11-03 20:07:23

标签: django apache mod-wsgi

我已经阅读了几个教程,但我不能这样做。我的apache配置文件看起来像这样(底部有重要的几行):

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log
    LogLevel warn

WSGIScriptAlias /wsgi/ /neuroling/projects/lnldb/lnldbproject/lnldb.wsgi
<Directory /neuroling/projects/lnldb/lnldbproject/>
  Order allow,deny
  Allow from all
</Directory>

我的lnldb.wsgi文件如下所示:

import os
import sys

path = '/neuroling/projects/lnldb'
if path not in sys.path:
    sys.path.append(path)

path = '/neuroling/projects/lnldb/lnldbproject'
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'lnldbproject.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

现在,如果我带着我的broswer前往[MY_IP_ADDRESS] / wsgi,我会看到:

使用lnldbproject.urls中定义的URLconf,Django按以下顺序尝试了这些URL模式: ^管理员/ 当前的网址与其中任何一个都不匹配。

很公道,我还没有给它一个URL。但至少lnldb.wsgi被调用了。

但是我想看管理员,所以我去[MY_IP_ADDRESS] / wsgi / admin,我得到:

未找到 在此服务器上找不到请求的URL / wsgi / admin。

有人可以指出我做错了什么,我相信这很简单......

非常感谢。

1 个答案:

答案 0 :(得分:2)

变化:

WSGIScriptAlias /wsgi/ /neuroling/projects/lnldb/lnldbproject/lnldb.wsgi

为:

WSGIScriptAlias /wsgi /neuroling/projects/lnldb/lnldbproject/lnldb.wsgi

在子URL处安装时,您不应该在挂载点上有一个尾部斜杠。