Django Apache mod_wsgi 500
У меня есть приложение Django, развернутое в CentOS. Вот как выглядит мой файл httpd.conf:
WSGISocketPrefix /var/run/wsgi
<VirtualHost *:80>
WSGIDaemonProcess safe python-path=/usr/lib/python2.6/site-packages
WSGIProcessGroup safe
WSGIScriptAlias / /opt/safe/safe/wsgi.py
<Directory /opt/safe/safe/>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
EDIT: Это мой TEMPLATE_DIRS
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
"/opt/safe/static/templates",
"/var/www/html/static/templates",
)
EDIT: Это моя настройка для администратора/электронной почты:
ADMINS = (
# ('Your Name', '[email protected]'),
('David', '[email protected]'),
)
SEND_BROKEN_LINK_EMAILS = True
DEFAULT_FROM_EMAIL = '[email protected]'
SERVER_EMAIL = DEFAULT_FROM_EMAIL
В моем каталоге шаблонов я определил пользовательский 500.html
файл. Когда я установил settings.py
settings.py
, чтобы иметь DEBUG = False
, я не могу нигде на моем сайте не видеть эту пользовательскую страницу 500.html.
Что еще более странно, так это то, что в файлах журналов ошибок нет, поэтому я не уверен, где искать и как действовать. Я знаю, что он может видеть шаблоны из-за моего пользовательского файла 500.html, но я не уверен, что вызывает ошибки внутреннего сервера 500.
EDIT: после дальнейшей настройки мне удалось получить некоторые ошибки (спасибо @Matt Stevens), вот вывод журнала:
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 89, in get_response
response = middleware_method(request)
File "/usr/lib/python2.6/site-packages/django/middleware/common.py", line 55, in process_request
host = request.get_host()
File "/usr/lib/python2.6/site-packages/django/http/__init__.py", line 223, in get_host
"Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): %s" % host)
SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): [my ip address]
Ответы
Ответ 1
Оказывается, мне нужно было добавить свой IP-адрес в "ALLOWED_HOSTS" в моем файле settings.py
. Благодаря регистрации ошибок я наконец смог это увидеть.
Фактический код:
ALLOWED_HOSTS = ['my.server.ip.address']
После перезагрузки Apache все работает правильно!
Ответ 2
Вы можете попробовать записать все в файл, чтобы устранить причину.
# in your settings file
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},
'logfile': {
'class': 'logging.handlers.WatchedFileHandler',
'filename': '/var/log/django/error.log'
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
'django': {
'handlers': ['logfile'],
'level': 'ERROR',
'propagate': False,
},
}
}