Git - 如何将代码从我的中央Git仓库部署到生产服务器?

4

我是Git新手,需要使用Git将Django网站部署到生产服务器上。我现在只有一个主分支。问题是开发环境与生产环境不同,应该如何在Git中维护两个环境(开发和生产)? 我应该使用两个新分支(开发和生产)吗?请给我一些提示。

另一个问题是,当我完成将代码上传/推送到生产服务器时,我需要重新启动Gunicorn(服务于Django网站)。我该如何做?

最重要的问题是...我是否应该使用Git来处理这个任务,还是有更好的选择?

此致敬礼。


1
我不太确定我是否理解了你的问题:你的意思是说,为了部署你的软件,你需要将它推送到生产服务器上的GIT存储库吗? - Giovanni Di Milia
不,看起来他不确定如何在GIT中使用分支。好吧,其实没有人真正知道:)。开玩笑,你不应该担心分支,而是你的项目布局。你可能很难弄清楚如何为生产和开发设置单独的设置? - Davor Lucic
@rebus,是的,这就是我的问题。有什么最好的方法来实现开发和生产的分离。而且...我应该在Git中做这个还是有更简单的选项来部署新代码到生产服务器... - André
我们使用buildout来解决这个问题,但是在SO上还有很多其他的方法可以找到。 - Davor Lucic
2个回答

2
你首先需要解决的问题是项目结构。通常开发环境和生产环境之间的区别在于 setting.py 和 url.py。那么为什么你要首先将它们分开呢?例如,你可以拥有一个主要的 settings.py,在其中定义所有通用的默认设置。然后在文件末尾,你只需导入 settings_dev.py 和 settting_prod.py(例如)即可:
try:
    from settings_prod import *
except ImportError:
    pass

try:
    from settings_dev import *
except ImportError:
    pass

那么,你可以简单地重载所有你想要的设置,并拥有项目的自定义设置(例如已安装的应用程序)。同样的逻辑也可以用于urls.py文件。
然后,你可以简单地忽略将*_dev文件添加到repo中,在服务器端,你只需从repo中检出代码并重新启动http服务器即可。目前我无法给出正确的应用程序名称来自动化此过程。有时候一个简单的Python脚本就可以解决问题,比如:监视文件日期是否更改,如果是,则运行http的重启命令。
希望这能有所帮助。
Ignas

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接