Развертывание веб-приложений - среды git - PullRequest
1 голос
/ 29 марта 2012

Я создаю небольшой коммерческий веб-проект под управлением Apache / WSGI / Django / MySQL.
У меня есть среда разработки и производства, и я использую git и fabric для push / pull модификаций.

Теперь я хотел бы иметь возможность протестировать новые версии с условиями, аналогичными рабочему серверу, прежде чем запускать их в эксплуатацию.

  • Я думаю об использовании одного и того же физического сервера с разными URL и разными репозиториями (это нормально?).
  • Существуют ли передовые практики, чтобы настроить эту среду предварительного тестирования как можно ближе к продукту?
  • Должен ли я использовать один и тот же веб-сервер и сервер базы данных? В таком случае, как я могу управлять, например, именем базы данных?

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Я работаю над настройкой, аналогичной описанной вами, без каких-либо серьезных проблем.Несколько файлов легко управляются в файле настроек, я меняю их в зависимости от имени корневого каталога:

ROOTDIR = os.path.abspath(os.path.dirname(__file__))

if ROOTDIR.startswith("dev_"):
    # -------- Developing settings ---------
    DOMAIN_NAME = 'dev.foo.com'
    DATABASES = {
        'default':{
            'ENGINE': 'django.db.backends.postgresql_psycopg2', 
            'NAME': 'development_db',         
            'USER': 'xxxx',          
            'PASSWORD': 'xxxxx',       
            'HOST': 'localhost',         
            'PORT': '',                  
            'OPTIONS': {'autocommit': True,}
        }
    }


elif ROOTDIR.startswith("production_"):
    # --------- Production settings --------
    DEBUG = False
    DOMAIN_NAME = 'production.foo.com'
    TEMPLATE_DEBUG = DEBUG
    DATABASES = {
        'default':{
            'ENGINE': 'django.db.backends.postgresql_psycopg2', 
            'NAME': 'production_db',     
            'USER': 'xxx',           
            'PASSWORD': 'xxx',        
            'HOST': 'localhost',         
            'PORT': '',                 
            'OPTIONS': {'autocommit': True,}
        }
    }
else:
# ....
1 голос
/ 29 марта 2012

Что вы можете сделать, это настроить сервер так, чтобы каждый сайт работал в своем собственном virtualenv http://pypi.python.org/pypi/virtualenv, это может работать вместе с apache и wsgi.

См. Здесь, например, http://www.foxhop.net/django-virtualenv-apache-mod_wsgi (однако с mod_wsgi)

таким образом вы получаете полный контроль над пакетами, установленными в каждом virtualenv

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...