причина
в настоящее время используетDjango
В процессе разработки проекта всегда будут ситуации, когда производственная среда и среда разработки должны использовать разные файлы настроек.Раньше я завершал разработку в среде разработки, загружал ее на сервер, а затем модифицировал файл настроек на сервере.Очень хлопотно, вчера случайно увидел такую статьюСтруктура проекта Django и переключение производства с использованием веток Gitкоторый описывает использованиеGit
Способ переключения веток файлы настроек в разных окружениях, но если честно я не понимаю смысла этого, нужно создавать разные настройки для разных окружений?Git
ветвь? может быть яGit
Я не очень хорошо в этом разбираюсь, но эта статья все же натолкнула меня на хорошую идею. Тогда я прохожуGoogle
видел другую статьюРазница между средой разработки Django и производственной средой, совместив эти две статьи, я настроил следующую схему.
план
Разделите файл настроек, установите разные переменные среды в разных средах, а затем передайтеPython
изos.environ.get
Метод получает переменные среды текущей среды в соответствии с различными переменными среды.import
Различные файлы настроек:
разделить файл настроек
существуетDjango
изproject
новый каталогsettings
каталог, а затем в соответствии с вашими потребностями вsettings
Создайте каталог, напримерbase.py, dev.py, pro.py, test.py
Такие файлы настроек, мои потребности относительно просты и разделены толькоbase.py, dev.py, pro.py
Три файла, они представляют собой: основные настройки, настройки среды разработки и настройки производственной среды.
Установите запись для файла настроек разделения
Как правило,base.py
Запись файла для настроек разделения
...
# 根据环境变量导入不同设置文件
# 如果环境变量中存在 ENV(具体值可行自定义)则判定为生产环境导入生产环境设置
# 否则则判定为开发环境导入开发环境设置
if os.environ.get('ENV', None):
from .pro import *
else:
from .dev import *
...
Изменить связанные файлы
После разделения файла настроек вам необходимо изменить файлы, которые ссылаются на файл настроек:wsgi.py, manage.py
# wsgi.py
# 修改此文件以确保通过 uwsgi 启动时程序能够正确的找到设置文件
import os
from django.core.wsgi import get_wsgi_application
# 这一行是重点,意思是添加环境变量 DJANGO_SETTINGS_MODULE 为 backend.settings.bases
# 具体值应根据个人项目的设置文件入口路径自行设置
os.environ['DJANGO_SETTINGS_MODULE'] = 'backend.settings.base'
application = get_wsgi_application()
# manage.py
# 修改此文件以确保通过 python manage.py runserver 启动时程序能够正确的找到设置文件
#!/usr/bin/env python
import os
import sys
if __name__ == '__main__':
# 这一行是重点,意思是添加环境变量 DJANGO_SETTINGS_MODULE 为 backend.settings.bases
# 具体值应根据个人项目的设置文件入口路径自行设置
os.environ['DJANGO_SETTINGS_MODULE'] = 'backend.settings.base'
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
Конфигурация производственной среды
Наконец, вам нужно только установить переменные среды, которые соответствуют файлу записи в производственной среде:
# vim /etc/profile
# 在最后一行添加:
export ENV="SERVER"
# 随便设置什么值都行但是必须与入口文件匹配
начать использовать
После завершения вышеуказанной конфигурации вы можете начать ее использовать.Разрабатываются и производятся два набора конфигураций, и нет необходимости загружать и изменять файлы.
Суммировать
Через схему можно увидеть два основных момента всего процесса:
- разделить файл настроек
- найти пропуск
Python
Очки для различения различных сред
Пока вы можете выполнить два вышеуказанных пункта, вы можете настроить свою собственную программу.
Ссылаться на
EveryDay: структура проекта Django и переключение производства с использованием веток Git
SmartKeyerror: разница между средой разработки Django и производственной средой