这可能真的很简单。但我想我对 WSGI 和 Django 太陌生了,无法自己获得它。我在/var/www/mysite 中托管的 Ubuntu 虚拟机上有一个全新的 Shiny Django 项目。该项目是用
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 中没有错误。
有人有想法么?
最佳答案
原始问题中的公然错误是:
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 错误日志中也必须有一个错误,因此您要么找错了地方,要么不知道要查找什么。
关于django - 在 Apache 上设置 django 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3488864/