Django 两个openshift git遥控器的单独配置文件(测试/生产)

Django 两个openshift git遥控器的单独配置文件(测试/生产),django,git,openshift,Django,Git,Openshift,我没能想出一些简单/容易的办法。我有一个django web应用程序的git存储库,我一直在把它推到Openshift进行测试。推送操作会导致代码在Openshift上部署和运行。现在,我已经在Openshift上创建了我的应用程序的另一个副本供生产使用,其中一些设置文件(尤其是在django配置文件settings.py中)略有不同。我想我需要有两个版本的文件,一个用于不同的远程设备,这样我可以推送到一个Openshift远程设备进行测试,然后推送到另一个Openshift远程设备进行部署。两

我没能想出一些简单/容易的办法。我有一个django web应用程序的git存储库,我一直在把它推到Openshift进行测试。推送操作会导致代码在Openshift上部署和运行。现在,我已经在Openshift上创建了我的应用程序的另一个副本供生产使用,其中一些设置文件(尤其是在django配置文件settings.py中)略有不同。我想我需要有两个版本的文件,一个用于不同的远程设备,这样我可以推送到一个Openshift远程设备进行测试,然后推送到另一个Openshift远程设备进行部署。两者之间只有少数文件不同,大多数文件相同。对于大多数文件来说,不同的只是推送的频率(在部署到生产环境之前消除开发中的bug)

我开始掌握git的诀窍,但我的思维仍然围绕着subversion,所以也许我缺少一些简单的东西。我是否应该在存储库中为生产创建一个单独的分支,然后在消除bug后从开发“推”到生产,然后让openshift上的生产远程仅连接到该分支

这是Openshift特定的问题吗?或者它是git中如此简单和基本的东西,以至于我甚至不知道如何正确地搜索它


(在Subversion、FWIW中,我会有一个单独的生产分支,我会将开发代码“合并/重新集成”到生产分支中,然后将其提交到存储库。将生产代码从Subversion服务器拉到运行的生产机器将是一个单独的步骤。)

要对dev和pro进行单独设置,可以执行以下操作:

  • 在当前
    settings.py
    文件附近创建一个设置文件夹
  • 在新设置文件夹中创建
    \uuuuu init\uuuuuuuuuupy
    文件(请参阅下面的内容),将其注册为python模块
  • \uuuu init\uuuuu.py

    from .base import *
    
    try:
        from .local import *
    except:
        pass
    
    try:
        from .production import *
    except:
        pass
    
  • 在新设置文件夹中创建
    base.py
    local.py
    production.py
    base.py
    最有可能包含与旧
    设置相同的代码。py
    只有一个区别-调试
    设置应设置为
    False
    。在
    local.py
    中为开发人员编写必要的代码,并在其中设置
    DEBUG=True
    。在
    production.py
    中,使用
    DEBUG=False
    指定pro的所有设置,并在文件开头指定下一个条件:

    from django.conf import settings
    
    if not settings.DEBUG:
        #write all your settings in that block
    
  • 现在,您可以将
    local.py
    添加到.gitignore,以便仅将
    production.py
    设置文件推送到服务器。因此,在dev和pro中有不同的设置

  • 将旧的
    setting.py
    文件重命名为
    old\u settings.py
    或其他文件

  • 我认为类似的方法可以用于为dev和pro指定其他单独的文件,但是,我没有检查这一点。

    如何检测您是否在Openshift服务器上,并在此基础上执行所需的设置代码

    Import os
    
    if 'OPENSHIFT_APP_NAME' in os.environ:
      # do production setup stuff here 
    else: 
      # do development setup stuff here 
    

    “我会有一个单独的生产分支,我会将开发代码“合并/重新集成”到生产分支中”——你可以在git中做同样的事情。您可以很容易地像您所说的那样拥有两个独立的分支:一旦您的bug被修复,只需将一个dev分支合并到master(或其他)中即可。我不认为这是操作系统特有的问题。我最喜欢这个答案。谢谢然而,开发和生产都是开放式的,所以如果os.Enviro('OPENSHIFT_APP_NAME')=='ProductionAppName'
    真是一个很好的建议,以及如何做这类事情的概述,那么我必须使用
    。谢谢