django - 在 Apache 上设置 django 的问题

标签 django apache2 mod-wsgi

这可能真的很简单。但我想我对 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/

相关文章:

python - 如何使用变量reverse_lazy 到 View /url?

PHP 站点在 XAMPP 中运行良好,但在 Linux 上重定向次数过多

ubuntu - 安装 mod_wsgi 3.1 时出错

django - 使用 apache 编译 mod_wsgi 的问题

python - Django 模型对空白值进行验证

python - 按对象从 QuerySet 中获取下一个和上一个对象

python - 如何使用 django-tagging-0.3.1 允许标签名称中存在空格?

ruby - 乘客死于 UnknownHttpMethod 异常

html - 如何将 404 重定向到 index.html 并将 URL 重写为主页 URL?

python - FlaskApp 使用 mod_wsgi 在 apache 中返回 http 500