-
Добрый день. Впервые взялся за django и сразу возник вопрос. как выносить приложение на реальный сервер? Предположим на сервере постоянно чекается стабильный бранч, но как быть с settings.py? Ведь пути могут отличаться. Как быть с эволюцией базы? Всмысле вот в новой версии надо будет выполнить несколько sql запросов, это что выносить в отдельный скрипт и при каждом чекауте делать спец. проверки и т.д. и т.п.? Кто как решает этот вопрос в общем =)
-
Проблема с settings.py обычно решается при помощи включения в него settings_local.py, которые хранит индивидуальные настройки под сервер, включая доступы к DB и включение/отключение DEBUG.
А в целом, правда, очень хотелось бы иметь средство аналогичное Capistrano из Ruby on Rails.
Может кто знает такое? -
Нашел вот тут несколько советом, как разделаться с settings.py http://code.djangoproject.com/wiki/SplitSettings
А Capistrano действительно интересно выглядит. -
@Сергей Тарасенко, Capistrano не пробовал, но сам использую Fabric, это нечто похожее.
-
Я подсмотрел (уже не помню, у кого) довольно простое решение - если название машины не такое, как у рабочего сервера - значит работаем на локальной машине.
import os, platform
DEVELOPMENT_MODE = (platform.node() != "server_host")
if DEVELOPMENT_MODE:
DEBUG = True
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'name_local'
DATABASE_USER = 'user_local'
DATABASE_PASSWORD = 'pass_xxx'
DATABASE_HOST = 'localhost'
DATABASE_PORT = ''
MEDIA_ROOT = 'd:/webservers/2008/...'
MEDIA_URL = 'http://127.0.0.1:8080/media/'
ADMIN_MEDIA_PREFIX = 'http://127.0.0.1:8080/media/admin_media/'
TEMPLATE_DIRS = ('d:/webservers/2008/...',)
else:
DEBUG = False
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'name_serv'
DATABASE_USER = 'user_serv'
DATABASE_PASSWORD = 'pass_yyy'
DATABASE_HOST = 'localhost'
DATABASE_PORT = ''
MEDIA_ROOT = '/var/web/domain.ru/www/media/'
MEDIA_URL = 'http://www.domain.ru/media/'
ADMIN_MEDIA_PREFIX = 'http://www.domain.ru/media/admin_media/'
TEMPLATE_DIRS = ('/var/web/domain.ru/www/templates/')
TEMPLATE_DEBUG = DEBUG
ADMINS = (('Admin', 'userx@mail.ru'),)
... -
Хотя, правильнее не использовать приведенный выше пример, особенно, если над проектом работают несколько разработчиков. Есть вполне толковая статья на Хабре: Конфигурация. dev vs production
-
Mercurial Queues.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.



