我的简单Django应用程序在调试模式(manage.py runserver
)下运行良好,在我的开发设备上可以在WSGI+Apache下运行,但当我推到EC2时,我开始收到我try 查看的任何URL(无论是在我的应用程序中还是在Django admin中)的间歇性错误(10-80%的时间)Bad Request (400)
.
我在哪里可以找到有关这方面的调试信息?/var/log/apache2/error.log
中没有任何内容,即使是LogLevel=info
中也是如此.我判断了版本,记录了请求环境(参见ModWSGI Debugging Tips),没有看到重大差异.
我剩下的一个 idea 是,我正在使用Ubuntu12.04(libapache2 mod wsgi 3.3-4build1)中的mod_wsgi,它是根据Python 2.7.1构建的;我有Python 2.7.3.Django是1.6,比Ubuntu的精确版本更新.我不太愿意从源代码开始构建软件包,因为它很难清理,而且这些看起来像是微小的版本更改...
Thank you for your help.
(For reference, here are the Apache config and WSGI apps)
Apache配置(默认)
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
WSGIScriptAlias /rz /usr/local/share/rz/rz.wsgi
...
rz.WSGI应用程序
import os
import sys
import django.core.handlers.wsgi
import pprint
path = '/usr/local/share/rz'
if path not in sys.path:
sys.path.insert(0, path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'rz.settings'
class LoggingMiddleware:
def __init__(self, application):
self.__application = application
def __call__(self, environ, start_response):
errors = environ['wsgi.errors']
pprint.pprint(('REQUEST', environ), stream=errors)
def _start_response(status, headers, *args):
pprint.pprint(('RESPONSE', status, headers), stream=errors)
return start_response(status, headers, *args)
return self.__application(environ, _start_response)
application = LoggingMiddleware(django.core.handlers.wsgi.WSGIHandler())