在Apache上设置django的问题

时间:2010-08-15 19:24:45

标签: django apache2 mod-wsgi

这可能很简单。但我想我对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中没有错误。

有人有什么想法吗?

2 个答案:

答案 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()