Какой метод рекомендуется использовать для развертывания настроек Django в производственной среде?

Я искал повсюду, и все, что я мог найти, было устаревшим или кусочками из разных источников, но ни у одного из них не было полного шага по развертыванию Django в производственной среде.

Я хотел бы увидеть рекомендуемый способ развертывания Django с использованием git, local и production settings.py, .gitignore специально для Django.

Как мне реализовать настройки, чтобы приспособить обе среды и что нужно добавить в файл.gitignore, чтобы в репозиторий git отправлялись только необходимые файлы?

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

Такие вопросы возникают при развертывании приложений Django.

  1. Где должны храниться настройки?
  2. Как правильно настроить параметры для обеих сред?
  3. Какая конфиденциальная информация должна быть отделена от основных настроек?

Обновление 25/09/2016:

Спасибо Andreas за разъяснение этого, и теперь я полностью согласен с тем, что не существует стандартного способа развертывания Django. Я провел длительное исследование и нашел наиболее распространенные используемые методы для развертывания настроек Django. Я поделюсь своими результатами со всеми, кто испытывает те же сомнения.

Ответ

Где должны храниться настройки?

Настройки лучше размещать в модуле настроек, чем в одном settings.py файл.

Как правильно настроить параметры для обеих сред?

Здесь модуль настроек очень удобен, потому что вы можете просто иметь независимые от среды настройки, и их можно поддерживать с помощью git или любого другого контроля версий.

Какая конфиденциальная информация должна быть отделена от основных настроек?

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

Вы можете создать отдельный файл в /etc/app_settings и сделать его очень ограниченным или просто использовать переменные среды изнутри системы.

часть.gitignore

Для части.gitignore я нашел потрясающее репо, где вы можете получить всевозможные примеры на https://github.com/github/gitignore.

Я закончил тем, что использовал:

# OSX Finder turds
.DS_Store

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# Distribution / packaging
.Python
env/

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Django stuff:
*.log
my_app/settings/dev.py
bower_components

Поскольку ответ был таким длинным, я создал статью, объясняющую каждый шаг в Django Settings Deployment.

1 ответ

Решение

Существует не один рекомендуемый способ развертывания приложения Django. Официальная документация содержит руководство по развертыванию с использованием Apache и mod_wsgi. Некоторые другие варианты - это PaaS, такие как Heroku/ Dokku, или развертывание с помощью Docker.

Обычно настройки делятся на разные файлы. Например, вы можете разделить настройки на четыре разных файла:

  • базовый файл (base.py) - общие настройки для всех сред (каждый файл ниже импортируется из этого с from .base import *
  • файл разработки (development.py) - параметры, специфичные для разработки, (DEBUG = True и т. д.)
  • производственный файл (production.py) - настройки, специфичные для производственной среды. (DEBUG = Ложь, белая настройка и т. Д.)
  • файл тестирования (testing.py)

Вы можете контролировать, какой файл настроек загружается с помощью переменной окружения DJANGO_SETTINGS_MODULE

Также рекомендуется хранить такие секреты, как SECRET_KEY, в переменных среды. SECRET_KEY = os.environ.get('SECRET_KEY', None), Или посмотрите пакет django-environment.

Проверьте этот репозиторий для примера установки.

Другие вопросы по тегам