【问题标题】:Web app deployment - git environmentsWeb 应用程序部署 - git 环境
【发布时间】:2012-04-12 20:20:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: django deployment development-environment production-environment


    【解决方案1】:

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

    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:
    # ....
    

    【讨论】:

    • 不错的主意。我已经为开发人员这样做了。我要试试我的测试服务器。
    • 工作正常,我做了类似DATABASES['default']['NAME'] = 'test_db'
    【解决方案2】:

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

    请参见此处,例如 http://www.foxhop.net/django-virtualenv-apache-mod_wsgi(但这是使用 mod_wsgi)

    这样您就可以完全控制每个 virtualenv 中安装的软件包

    【讨论】:

      猜你喜欢
      • 2021-09-18
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 2017-12-18
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 2012-08-03
      相关资源
      最近更新 更多