Отладка Django-сайта на боевом сервере OpenShift

Ни в коем случае нельзя включать отладку на боевом сервере. Рекомендуется создать копию сервера, недоступного для пользователя.

В файле settings.py задается переменная DEBUG. Если при загрузке страницы произошла ошибка, то в зависимости от значения этой переменной выдается либо страница с HTTP ошибкой, либо страница с отладочной информацией.

На локальном сервере разработчика значение DEBUG равно True большую часть времени, а на боевом сервере значение DEBUG должно быть всегда равно False. Но можно создать тестовый сервер, копию боевого, где значением DEBUG можно управлять.

Следующий код позволяет включать и отключать отладку на локальном сервере и на сервере Openshift. Код располагается в файле settings.py.

1
2
3
4
5
6
7
8
9
import os
ON_PAAS = 'OPENSHIFT_REPO_DIR' in os.environ
LOCAL_DEBUG = True
ENV_DEBUG = os.environ.get('DEBUG') == 'True'
 
DEBUG = (not ON_PAAS and LOCAL_DEBUG) or (ON_PAAS and ENV_DEBUG)
 
if ON_PAAS and DEBUG:
    print("Warning: debug mode!")

Переменная ON_PAAS равна True если код выполняется на сервере Openshift, иначе она равна False. Переменная LOCAL_DEBUGвключает или отключает локальную отладку.

При отключении отладки на локальном сервере в список ALLOWED_HOSTS должна быть добавлена строка ‘localhost’.

1
ALLOWED_HOSTS = ['localhost']

Включить отладку на сервере Openshift можно если создать переменную окружения DEBUG со значением True.

Управлять переменными окружения на Openshift можно с помощью инструмента rhc. Следующие команды включают отладку на сервере Openshift.

1
2
3
rhc env set DEBUG=True -a test
rhc app stop -a test
rhc app start -a test

Где test — это имя приложения. Первая команда устанавливает переменную окружения, а две другие перезапускают приложение.

Отключить отладку можно следующими командами.

1
2
3
rhc env unset DEBUG -a test
rhc app stop -a test
rhc app start -a test

Вместо первой команды можно использовать следующую команду.

1
rhc env set DEBUG=False -a test
-->
X
Обратный звонок