这可能很简单。但我想我对WSGI和Django来说太新了,不能靠我自己来做。我在/ var / www / mysite中托管的Ubuntu虚拟机上有一个全新的闪亮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中没有错误。
有人有什么想法吗?
答案 0 :(得分:2)
原始问题中明显的错误是:
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错误日志中也必须存在错误,因此您要么在错误的位置查找,要么不知道要查找的内容。
答案 1 :(得分:1)
您是不是错过了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()