Какой метод рекомендуется использовать для развертывания настроек Django в производственной среде?
Я искал повсюду, и все, что я мог найти, было устаревшим или кусочками из разных источников, но ни у одного из них не было полного шага по развертыванию Django в производственной среде.
Я хотел бы увидеть рекомендуемый способ развертывания Django с использованием git, local и production settings.py, .gitignore специально для Django.
Как мне реализовать настройки, чтобы приспособить обе среды и что нужно добавить в файл.gitignore, чтобы в репозиторий git отправлялись только необходимые файлы?
Пожалуйста, обратите внимание, что я хочу знать лучшие практики и современные методы использования локальных и производственных настроек.
Такие вопросы возникают при развертывании приложений Django.
- Где должны храниться настройки?
- Как правильно настроить параметры для обеих сред?
- Какая конфиденциальная информация должна быть отделена от основных настроек?
Обновление 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.
Проверьте этот репозиторий для примера установки.