Мое простое приложение Django отлично работало в режиме отладки (manage.py runserver
) и работает под WSGI + Apache в моем блоке dev, но когда я нажал на EC2, я начал получать прерывистые (10-80% времени) ошибки Bad Request (400)
для любых URL-адресов, которые я пытаюсь просмотреть (будь то в приложении или в администраторе Django.
Где я могу найти отладочную информацию об этом? Ничего не отображается в /var/log/apache2/error.log
, даже с LogLevel=info
. Я проверил версии, зарегистрировал среду запроса (см. Советы по отладке ModWSGI) и не вижу существенных отличий.
Единственным оставшимся я считаю, что я использую mod_wsgi из Ubuntu 12.04 (libapache2-mod-wsgi 3.3-4build1), который был создан против Python 2.7.1; У меня Python 2.7.3. И Django - 1.6, новее, чем версия Ubuntu Precise. Я стесняюсь приступать к созданию пакетов из исходного кода, так как это так сложно очистить, и это похоже на незначительные изменения в версии...
Благодарим за помощь.
(Для справки, вот настройки Apache и приложения WSGI)
Конфигурация Apache (000 по умолчанию)
<VirtualHost *:80>
ServerAdmin [email protected]
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())