#django #ubuntu #django-deployment
#django #ubuntu #django-развертывание
Вопрос:
Я развернул свой проект Django на Ubuntu и забыл установить для отладки значение False до самого конца, теперь я перенес последний коммит на сервер с установленным для отладки значением False. Итак, теперь, когда я пытаюсь получить доступ к несуществующему URL, например, он должен отображать мой пользовательский 404.html шаблон.
Вместо этого он отображает ошибку режима отладки 404, сообщающую мне, что Debug = True, даже если это не так, я проверил settings.py файл на сервере и отладка имеют значение False.
Я попытался перезапустить nginx и supervisor с помощью service nginx restart
и supervisorctl restart my_app_name
, но когда я ввожу несуществующий URL, он по-прежнему говорит, что для Debug установлено значение True.
Почему он все еще говорит, что для Debug установлено значение True?
ОБНОВЛЕНИЕ: после полученного ответа я просмотрел возможные предложенные проблемы и не нашел ни одной из них. Кроме того, когда я запускаю точно такой же проект на локальном компьютере, он отлично работает с Debug = False.
Если я запускаю на сервере тот ЖЕ САМЫЙ проект, с тем же точным кодом и файлами / файловой структурой (они «синхронизированы» с github), это показывает, что для отладки установлено значение True, поэтому должно быть что-то, связанное с конфигурацией на сервере.
ВТОРОЕ ОБНОВЛЕНИЕ: после добавления нового домена в ALLOWED_HOSTS
список settings.py файл, он также игнорирует это. Так что это не просто проблема переменной DEBUG, она игнорирует каждое изменение, внесенное в settings.py файл. Может ли это быть кэширование Cloudfare? Если да, то как это предотвратить?
Комментарии:
1. Есть шанс, что это хероку?
2. Нет, это не так. Я использую сервер Ubuntu с собственным IP-адресом.
3. Тогда вам придется его отлаживать. Запустите
/path/to/bin/python manage.py shell
с помощью интерпретатора python, который использует супервизор, и введитеimport settings
следующее поsettings.DEBUG
. Если это показывает True, значит, это True, и вы где-то переопределяете его. Если он показывает False, то, возможно, nginx не разговаривает с нужным приложением? Кэш Cloudflare? Действительно трудно догадаться…4. Какой сервер WSGI вы используете? Мне часто приходится перезапускать gunicorn (мой WSGI по выбору) после изменений. Определяется ли значение
DEBUG
параметра переменной среды?5. Я использую gunicorn с supervisor, и я несколько раз пытался перезапустить supervisor с
supervisorctl restart app_name
. Разве это неправильный способ перезапустить gunicorn?
Ответ №1:
Потому что это так. Общие причины:
- DEBUG= False и 30 строк спустя DEBUG = True
- DJANGO_SETTINGS_FILE указывает на другой файл, тогда вы изменили настройку отладки в
- в нижней части файла настроек импортируется другой файл с общим именем
local_settings.py
, имеющий значение DEBUG=True - в нижней части файла настроек находится некоторая логика, которая импортирует переменные среды, перезаписывая предыдущие определения
DEBUG = 'False' # this is True
Комментарии:
1. Спасибо, что предложили свои решения, но я не столкнулся ни с одной из предложенных проблем. Кроме того, если я запускаю точно такой же проект с точно таким же кодом на локальном компьютере, он работает просто отлично, и для отладки установлено значение False, согласно settings.py
2. не могли бы вы запустить
grep DEBUG . -R
в папке django ?