【问题标题】:Django: only blank pageDjango:只有空白页
【发布时间】:2011-10-14 02:20:58
【问题描述】:

我有一个带有 Apache 的服务器,我想启动用 Django 编写的网站。我用户 mod_wsgi。现在我已经准备好了。但是服务器的响应是空的。在错误日志中,什么也没有。你知道是什么原因吗?

如果某些文件有帮助(*.wsgi、settings.py)我会追加它。

Prochazky.wsgi

import os
import sys
import site

os.environ['PYTHON_EGG_CACHE'] = '/home/prochazky/venv/.python-eggs'

site.addsitedir('/home/prochazky/venv/lib/python2.6/site-packages')

os.environ['DJANGO_SETTINGS_MODULE'] = 'Prochazky.settings'

sys.path.append('/home/prochazky/')
sys.path.append('/home/prochazky/Prochazky/')

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Apache 虚拟主机:

<VirtualHost *:80>
    WSGIScriptAlias / /home/prochazky/Prochazky/Prochazky.wsgi
    ServerName testing.prochazky.net
    DocumentRoot /home/prochazky

    ErrorLog /home/prochazky/wsgi.log
</VirtualHost>

【问题讨论】:

  • 您能给我们看看您的 wsgi 和 apache vhost 文件吗?
  • 顺便说一句,使用“DocumentRoot /home/prochazky”是一个非常糟糕的主意。如果您设法删除了 WSGIScriptAlias,那么该帐户主目录中的所有内容最终都可能被人们下载。切勿将 DocumentRoot 指向包含您不希望人们看到的内容的目录。

标签: python django apache response wsgi


【解决方案1】:

尝试让 hello world 程序首先运行,而不是 Django。观看:

http://code.google.com/p/modwsgi/wiki/WhereToGetHelp?tm=6#Conference_Presentations

然后阅读:

http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

不过猜测一下,您是否可能将 mod_python 加载到同一个 Apache 中。不兼容的 mod_python 将导致该症状,仅在主 Apache 错误日志中显示分段错误消息。


更新 1

您是否将 mod_php 加载到同一个 Apache 中?它有时可能有冲突的共享库要求,并会导致崩溃。如果您也在加载它,请从 Apache 配置中禁用它。

也试试设置:

WSGIApplicationGroup %{GLOBAL}

这将强制使用主解释器,这将避免第三方扩展未正确编写以在子解释器中工作的问题。

您确实需要更仔细地查看主要的 Apache 错误日志,而不是虚拟主机日志。当您发出请求时在其上运行“tail -f”并检查您是否在那里看到消息,特别是分段错误或类似消息。虚拟主机错误日志中不会显示有关进程崩溃并导致空白页面的此类消息。

【讨论】:

  • 是的,我尝试了 hello world 程序,它可以工作。我没有 mod_python(是的,我确定,我一直在寻找它)。
  • 那是什么? PHP 或可能是 Python 的第三方 C 扩展?
  • @Graham 哇,我以前一起运行过 mod_php 和 mod_wsgi,但我没有遇到这个问题......现在我害怕再次在我的服务器上重新启用它。是否有任何文章解释此错误/问题?我很乐意阅读这篇文章,以备不时之需。
  • @James 这一切都归结为库冲突,或者最坏情况下的符号名称冲突。几个例子是code.google.com/p/modwsgi/wiki/…code.google.com/p/modwsgi/wiki/…
  • FWIW,mod_python 冲突问题在code.google.com/p/modwsgi/wiki/InstallationIssues中解释
【解决方案2】:

您的根 url/view 的模板文件是否可能为空或评估为空?

例如,如果您有这样的模板:

{% extends "base.html" %}
{% block content %}blah blah{% endblock %}

并且 base.html 不使用块“内容”,那么您模板中的内容块将不会被使用,并且您的模板将评估为空,尽管有内容。

【讨论】:

  • 响应完全是空的 - 没有标题,nothink。我在我的本地主机上有同样的应用程序,它在那里工作。不幸的是,它完全是不同的操作系统。
  • 当我去那里时,它给了我一个 500 错误,所以你现在可能想检查日志。如果您将 IP 设置为内部 IP,它可能会尝试向您显示错误但也失败了,但不会向我显示错误。
  • 是的,我明白了,我正在研究它并尝试一些想法,因此有 e500。
【解决方案3】:

这是来自我的设置(更改名称以保护 innocent 有罪)。

<VirtualHost *:80>
        ServerName site.domain.com 
        ServerAdmin webmaster@domain.com 

        WSGIScriptAlias / /home/user/site/django.wsgi

        <Directory /home/user/site/>
                Options FollowSymLinks
                AllowOverride None 
                Order allow,deny
                allow from all
        </Directory>
         ... etc etc etc.

我认为您需要 &lt;directory&gt; 才能允许服务器访问 .wsgi。
不过,我真的不是 apache 大师,所以不要把这个例子视为完美。 (我认为只需要order Allow, denyallow from all

值得一看的好网站:http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多