我知道Capistrano,但它对我来说有点太重了。我个人设置了两个Mercurial存储库,一个在生产服务器上,另一个在我的本地开发机器上。通常,当新功能准备就绪时,我会将更改从本地计算机上的存储库推送到服务器上的存储库,然后在服务器上进行更新。这是在多台计算机上保持文件同步的非常简单快捷的方法,但无助于更新数据库。
您对问题的解决方案是什么?
我知道Capistrano,但它对我来说有点太重了。我个人设置了两个Mercurial存储库,一个在生产服务器上,另一个在我的本地开发机器上。通常,当新功能准备就绪时,我会将更改从本地计算机上的存储库推送到服务器上的存储库,然后在服务器上进行更新。这是在多台计算机上保持文件同步的非常简单快捷的方法,但无助于更新数据库。
您对问题的解决方案是什么?
我曾经使用 git push 发布到我的网络服务器,但最近我一直在使用 rsync。我试图让我的网站尽可能不知道它在哪里运行(使用相对路径等),到目前为止它运行得很好。唯一的挑战是保持数据库同步,为此我通常使用生产数据库作为主数据库,并定期备份和导入我的测试数据库。
或者Fabric,如果你更喜欢 Python。
capistrano有什么重量级的?如果你想同步文件,那么确保 rsync 很棒。但是,如果您需要进行数据库更新,那么上限可能还不错?
@安德鲁
要使用 git push 部署您的站点,您首先需要在 .git/config 文件中设置一个远程服务器以推送到。然后你需要配置一个钩子,它基本上会执行 git reset --hard 将你刚刚复制到存储库的代码复制到工作目录。
我知道这有点含糊,但是一旦我切换到 rsync,我实际上删除了服务器端的 .git 文件夹,所以我没有用来让魔法发生的确切脚本。不过,这可能是一个完整问题的良好候选者,因此您可能会以这种方式获得更多回复。
编辑:我知道已经有一段时间了,但我最终找到了我再次使用的东西: