代码之家  ›  专栏  ›  技术社区  ›  Amy

在Apache上设置Django时出现问题

  •  4
  • Amy  · 技术社区  · 14 年前

    这可能真的很简单。但我想我对WSGi和Django来说太陌生了,不能自己拿。我在Ubuntu虚拟机上有一个全新的闪亮Django项目,托管在/var/www/mysite中。项目是用创建的

    django-admin startproject mysite
    

    我按照wsgi教程进行设置,因此创建了一个./apache文件夹,在其中放置了这个文件django.wsgi:

    import os
    import sys
    os.environ['DJANGO_SETTINGS_MODULE'] = '/var/www/mysite/mysite.settings'
    
    import django.core.handlers.wsgi
    application = django.core.handlers.wsgi.WSGIHandler()
    

    然后我将此配置行添加到Apache配置中:

    WSGIScriptAlias / /var/www/mysite/apache/django.wsgi
    

    当我试图访问这个网站时,什么也没有返回。连接刚刚挂起。这在我的access.log中:

    192.168.2.116 - - [15/Aug/2010:14:09:02 -500] "GET / HTTP/1.1" 500 639 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
    

    所以它正在登陆网站。但有人什么都没做。errors.log中没有错误。

    有人有什么想法吗?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Graham Dumpleton    14 年前

    最初问题中的明显错误是:

    os.environ['DJANGO_SETTINGS_MODULE'] = '/var/www/mysite/mysite.settings'
    

    需要:

    sys.path.append('/var/www')
    sys.path.append('/var/www/mysite')
    
    os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
    

    也就是说,django设置模块必须是python包路径,而不是绝对文件系统路径。被接受的答案甚至没有指出这一点,而是给出了另一组不用解释就可以使用的代码。

    此外,还需要设置python模块搜索路径,即sys.path,以便python可以找到该环境变量中列出的设置文件。

    最后,如果您的浏览器挂起,那么您也犯了其他错误,因为您所做的操作应该会导致返回错误而不是挂起浏览器。Apache错误日志中也必须有一个错误,所以您要么在错误的地方查找,要么不知道要查找什么。

        2
  •  1
  •   che    14 年前

    您是否缺少Django应用程序的路径?我的 app.wsgi 有这样的:

    import os, sys
    sys.path.append('/usr/local/src/django-1.2') # django is outside default path
    sys.path.append('/usr/local/src/django-photologue-2.2') # app i'm using
    sys.path.append('/var/www/mysite')
    
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
    # this is regular python import, so my settings are physically
    # here: /var/www/mysite/settings.py
    
    import django.core.handlers.wsgi
    application = django.core.handlers.wsgi.WSGIHandler()