Как запустить Django DEBUG на производственном сервере без навязчивости - PullRequest
5 голосов
/ 22 декабря 2009

Я ищу безопасный способ запуска запросов DEBUG для INTERNAL_IPS на производственном сервере django без необходимости изменения файла settings.py. Главным образом для того, чтобы некоторые дизайнеры работали над панелью инструментов, чтобы проверить проблемы с живыми данными / носителями, но не полагаясь на них, чтобы сбросить настройки после их завершения.

Аналогично этому методу. Однако это подходит только для развертывания.

http://nicksergeant.com/blog/django/automatically-setting-debug-your-django-app-based-server-hostname

в прошлом на системах на основе php у меня были mydomain.com и демонстрационная версия mydomaincom.myprodserver.com, где домен prodserver может автоматически запускать отладочный код на основе $ _SERVER ['HOST_NAME'], но в django отсутствует простой суперглобальный , Например, в примере с блогом имя хоста - это / etc / hostname, а не vhost.

Любые идеи приветствуются.

Edit:

У меня есть какое-то обходное решение (но в идеале я бы предпочел более переносимое), добавив / path / to / django_in_debug / к sys.path записи vhost mydomaincom.myprodserver.com. Затем в файле settings.py

try:
    from django_in_debug.settings import *
except:
    DEBUG = False

1 Ответ

9 голосов
/ 22 декабря 2009

То, что вы просите сделать, немного сложнее, чем кажется. Вы хотите показать отладочную информацию для определенного INTERNAL_IPS, который происходит на уровне запроса . Однако вы говорите о файле settings.py, который находится на уровне сайта .

Для этого вам потребуется повторная оценка settings.py для каждого запроса, что, как вы можете сказать, вероятно, очень плохое направление. Согласно собственной документации Django, изменение настроек сайта после его загрузки - нет-нет (честно говоря, людям это сходит с рук, но это не стоит официальной позиции Django).

Вот вам идея:

У вас есть 2 файла WSGI. Первый файл WSGI указывает на ваш основной файл settings.py, а apache направляет трафик с www.yourdomain.com на него. Второй файл WSGI указывает на файл debug_settings.py, а apache перенаправляет трафик с debug.yourdomain.com на него. debug_settinsg.py выглядит так:

from settings import *

DEBUG = True
TEMPLATE_DEBUG = DEBUG

Отсюда вы пишете простой компонент промежуточного программного обеспечения для перехвата входящих запросов. IP-адрес запроса сравнивается с settings.INTERNAL_IPS, и, если совпадение найдено, запрос перенаправляется на debug.yourdomain.com.

Это позволяет сохранить 1 копию сайта, но изменить настройку уровня сайта на основе значения уровня запроса.

...