Web应用程序部署 - git环境

时间:2012-03-29 07:44:18

标签: django deployment development-environment production-environment

我正在创建一个运行Apache / WSGI / Django / MySQL的小型商业Web项目 我有一个开发和生产环境,并使用git和fabric来推/拉修改。

现在,我希望能够在生产服务器之前测试具有类似条件的新版本。

  • 我正在考虑使用具有不同URL和不同存储库的相同物理服务器(这可以吗?)。
  • 是否有最佳做法将此预制环境设置为尽可能接近产品?
  • 我应该使用相同的Web服务器和数据库服务器吗?在那种情况下,我如何管理例如数据库名称?

2 个答案:

答案 0 :(得分:2)

我正在处理与您描述的类似的设置,没有任何重大问题。在设置文件中可以轻松管理多个数据库,我根据根目录名称更改它们:

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 :(得分:1)

您可以做的是设置服务器,以便每个站点都运行在自己的virtualenv http://pypi.python.org/pypi/virtualenv中,这可以与apache和wsgi一起使用。

请参见此处http://www.foxhop.net/django-virtualenv-apache-mod_wsgi(但这与mod_wsgi有关)

通过这种方式,您可以完全控制每个virtualenv

中安装的软件包