2017-01-19 15 views
0

У меня возникли проблемы с пониманием перехода от локальных к производственным настройкам для развертывания проектов Django. Я использую виртуальную машину Ubuntu (VM), если это имеет значение.Реализация настроек производительности в Django

Я понимаю, как настроить мои настройки. Я понимаю лучшие практики создания файлов настроек (base.py, local.py, production.py, blah, blah). Я знаю, что в местном развитии DEBUG = True, в производстве DEBUG = False, blah, blah.

Но как реализовать это переключение при развертывании? Я могу избавиться от local.py? Я создаю какую-то логику, чтобы моя виртуальная машина только читала base.py и production.py?

Каков наилучший подход?

+0

Я бы рекомендовал вам избегать нескольких файлов настроек и вместо этого использовать [django-environ] (https://github.com/joke2k/django-environ) для обработки ваших изменяющихся параметров в качестве переменных среды. Оформить заказ [12-фактор-приложение] (https://12factor.net) –

+0

Спасибо Густаво за ответ. Ваша рекомендация действительно заманчива. Однако у меня есть требования и приложения для вещей, которые мне не нужны в производстве (тестирование приложений, генераторов документации и т. Д.). Пока я не выясню более чистое решение, на данный момент я оставлю свои settings.local.py вне контроля версий и всегда буду развертывать из готового git-репо. Береги себя. –

ответ

0

Я не уверен, что лучший подход, но то, что я делаю работу ...

У подножия моего settings.py, у меня есть:

try: 
    from local_settings import * 
except ImportError, e: 
    pass 

Я держу все мои развития на местном уровень настройки в файле local_settings.py, которые превышают любые производственные настройки. Я также не загружаю файл local_settings.py!

0

Что вы можете сделать, это проверить свои настройки, какая среда используется в данный момент. Для этого вы можете установить в своей системе переменную окружения, которая будет иметь разные значения в среде разработки и рабочей среде.

вы можете установить эти переменные окружения с помощью

sudo -H gedit /etc/environment 

и добавьте следующую строку в файл:

DEBUG="true" 

(сделать это изменения доступны вам придется выйти и снова войти в вашу систему)

В производственной среде вы должны установить DEBUG = "false".
, то вы можете сделать это в settings.py:

DEBUG = os.environ.get('DEBUG', 'true') != 'false' 

, а затем вы можете установить все настройки, которые будут отличаться друг от друга в зависимости от среды, которая используется, как это:

if DEBUG: 
    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' 
else: 
    STATICFILES_STORAGE = STATICFILES_STORAGE = 'custom_storages.StaticStorage' 

(установка выше использует локальный сервер django для обслуживания статических файлов, если он находится в среде разработки, и amazon s3 с boto, если в производственной среде (которая определена в модуле custom_storages)

Таким образом, вы можете нажимайте свои обновления, и всегда нужные настройки следует подбирать в зависимости от среды.