Как стать автором
Обновить

Конфигурация. dev vs production

Время на прочтение2 мин
Количество просмотров1.9K
Не думаю, что данный топик должен стать откровением для продвинутых Django-кодеров. Но по опыту работы в разных проектах, могу сказать, что многие программисты всёже не в теме.

Итак, любой проект (практически) требует раздельную конфигурацию для девелоперской машины и продакшн сервера. Можно просто сделать два файла конфигурации, но иногда требуется вписать и изменить общие для каждой конфигурации настройки.

Некоторые вставляют кучу if-ов или ещё чего по хуже, опираясь на ip (ужос) или имя машины, но это всё крайне неудобно и захламляет конфигурацию. Для меня это очень сильный довод к неучастию в проекте, т.к. это говорит о качестве всего кода.

В Django сообществе уже приняты негласные стандарты, основанные на опыте многих: создание отдельного файла конфигурации local_settings.py и включение его в конце основной конфигурации, таким образом перезаписывая значения нужных параметров.

Думаю, лучше продемонстрировать.

settings.py
# Конфигурация продакшн сервера (БД)
DATABASE_ENGINE = 'postgresql_psycopg2'
DATABASE_NAME = 'professors'
DATABASE_USER = 'root'
DATABASE_PASSWORD = 'blabla'
DATABASE_HOST = 'localhost'
DATABASE_PORT = ''
# Тут всякая прочая бредятина
# ...
# А вот тут включаем
try:
    from local_settings import *
except ImportError:
    pass

Далее создаём local_settings.py и пишем:
DATABASE_ENGINE = 'postgresql_psycopg2'
DATABASE_NAME = 'professors_v2'
DATABASE_USER = 'developer'
DATABASE_PASSWORD = 'blabla2'

Сразу добавляем local_settings.py в svn:ignore, дабы не ипаться с этим в дальнейшем.

Всё готово. Загружаем проект в svn, делаем на продакшене svn co /var/svn (ну или как у кого). Теперь без особого гемора можно развернуть версию из SVN, при этом у разработчика остаётся достаточное пространство для манёвра в локальной конфигурации.

Это просто, но крайне удобно. Пользуйтесь кто ещё не знал.

Ссылки по теме

Теги:
Хабы:
Всего голосов 28: ↑26 и ↓2+24
Комментарии44

Публикации

Истории

Работа

Python разработчик
135 вакансий

Ближайшие события