如何在服务器和Github上维护django的不同设置

如何在服务器和Github上维护django的不同设置,django,git,version-control,github,git-branch,Django,Git,Version Control,Github,Git Branch,在生产服务器上,我当然需要有不同的设置,并且与本地设置不同 我们的开源项目托管在github上。因此,主分支不是生产代码(至少在设置配置之前) 现在,我们要主持这个项目(django)。。为此,我找到的最简单的解决方案是在本地创建一个新分支,设置生产设置,将服务器git添加为remote,将该分支推送到远程源 所以,我们可以随时将最新的稳定版本合并到生产分支中。。轻易地 但是在github中管理文件时存在一些问题 假设django设置在“proj/settings.py”中提供。由于系统之间的本

在生产服务器上,我当然需要有不同的设置,并且与本地设置不同

我们的开源项目托管在github上。因此,主分支不是生产代码(至少在设置配置之前)

现在,我们要主持这个项目(django)。。为此,我找到的最简单的解决方案是在本地创建一个新分支,设置生产设置,将服务器git添加为remote,将该分支推送到远程源

所以,我们可以随时将最新的稳定版本合并到生产分支中。。轻易地

但是在github中管理文件时存在一些问题

假设django设置在“proj/settings.py”中提供。由于系统之间的本地设置不同,我们创建了“proj/local_settings.py”来覆盖系统特定的本地设置(例如,staticfiles location)。。Git使用.gitignore忽略此文件

现在,如果我们在生产分支中使用这个文件来配置生产设置,并且作为当前被忽略的Git。。我们不能用它

要将local_settings.py从本地生产分支推送到生产服务器,我们需要删除该分支中.gitignore中的该位置

一切都很好,在这里接受

实际问题来了

当我们想要将新的更改推送到生产服务器时,我们首先要将它们推送到生产本地分支,然后再推送到生产服务器。。。但是现在,

.gitignore文件更改为发行版中的现有版本(即,再次添加local_settings.py)

为此,每次我将某些内容合并到生产本地分支中时,我都必须手动删除gitignore中的local_settings.py


当然,上面的一切都是一团糟。我如何轻松地处理它呢?我的建议是从您的设置中删除任何取决于它部署位置的设置。将这些设置放入环境变量中。例如:

STATIC_ROOT = os.environ.get('STATIC_ROOT')
然后,您需要在运行Web服务器之前设置这些环境变量

关于本地:

STATIC_ROOT=`pwd`/static python manage.py runserver
根据您的部署方式,请参阅文档

这一配置到环境变量的原则在12因素应用程序中公开: