我有一台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 vhost:
<VirtualHost *:80>
WSGIScriptAlias / /home/prochazky/Prochazky/Prochazky.wsgi
ServerName testing.prochazky.net
DocumentRoot /home/prochazky
ErrorLog /home/prochazky/wsgi.log
</VirtualHost>
答案 0 :(得分:7)
尝试让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'并检查您是否在那里看到消息,特别是分段错误或类似消息。有关进程崩溃和导致空页面的消息将不会显示在虚拟主机错误日志中。
答案 1 :(得分:1)
模板文件的根URL /视图是否为空或评估为空?
例如,如果您有这样的模板:
{% extends "base.html" %}
{% block content %}blah blah{% endblock %}
并且base.html不使用块“内容”,然后您的模板中的内容块将不会被使用,并且尽管有内容,您的模板将评估为空。
答案 2 :(得分:0)
这是我的设置(名称被修改以保护无辜有罪)。
<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.
我认为你需要<directory>
来允许服务器访问.wsgi
我真的不是一个阿帕奇大师,所以不要把这个例子视为完美。 (我认为所需要的只是order Allow, deny
和allow from all
)
要查看的好网站:http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango