1. redbaron

    04.12.2008

    0 ↑
    0 ↓
    Добрый день. Впервые взялся за django и сразу возник вопрос. как выносить приложение на реальный сервер? Предположим на сервере постоянно чекается стабильный бранч, но как быть с settings.py? Ведь пути могут отличаться. Как быть с эволюцией базы? Всмысле вот в новой версии надо будет выполнить несколько sql запросов, это что выносить в отдельный скрипт и при каждом чекауте делать спец. проверки и т.д. и т.п.? Кто как решает этот вопрос в общем =)
  2. Проблема с settings.py обычно решается при помощи включения в него settings_local.py, которые хранит индивидуальные настройки под сервер, включая доступы к DB и включение/отключение DEBUG.

    А в целом, правда, очень хотелось бы иметь средство аналогичное Capistrano из Ruby on Rails.

    Может кто знает такое?
  3. redbaron

    04.12.2008

    0 ↑
    0 ↓
    Нашел вот тут несколько советом, как разделаться с settings.py http://code.djangoproject.com/wiki/SplitSettings

    А Capistrano действительно интересно выглядит.
  4. Alexander Artemenko

    04.12.2008

    0 ↑
    0 ↓

    @Сергей Тарасенко, Capistrano не пробовал, но сам использую Fabric, это нечто похожее.

  5. hardtop

    05.12.2008

    0 ↑
    0 ↓
    Я подсмотрел (уже не помню, у кого) довольно простое решение - если название машины не такое, как у рабочего сервера - значит работаем на локальной машине.
    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'),)
    ...
  6. hardtop

    12.12.2008

    0 ↑
    0 ↓
    Хотя, правильнее не использовать приведенный выше пример, особенно, если над проектом работают несколько разработчиков. Есть вполне толковая статья на Хабре: Конфигурация. dev vs production
  7. Andrey

    15.12.2008

    0 ↑
    0 ↓

    Mercurial Queues.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.