如何更新服务器上的Web应用程序?
问题描述:
我知道Capistrano但它对我来说有点太重量级了。我个人设置了两个Mercurial存储库,一个在生产服务器上,另一个在我的本地开发机器上。通常,当新功能准备就绪后,我会将更改从本地计算机上的存储库推送到服务器上的存储库,然后在服务器上进行更新。这是保持文件在多台计算机上同步的非常简单快捷的方式,但无助于更新数据库。如何更新服务器上的Web应用程序?
你对这个问题的解决方案是什么?
答
我曾经使用git push发布到我的web服务器,但最近我刚刚使用rsync。我尝试让我的网站尽可能不知道它在哪里运行(使用相对路径等),到目前为止它的运行情况非常好。唯一的挑战是让数据库保持同步,为此我通常使用生产数据库作为主数据库,并定期备份和导入到我的测试数据库中。
答
@Andrew
要使用混帐推部署您的网站,你需要做的首先建立一个远程服务器在你的.git/config文件推到。然后你需要配置一个基本上执行git reset的钩子 - 难以将你刚刚复制到仓库的代码复制到工作目录。
我知道这有点含糊,但是一旦我切换到rsync,我实际上删除了服务器端.git文件夹,所以我没有我用来制作魔术的确切脚本。尽管如此,这可能是一个完整问题的很好的候选人,所以你可能会得到更多的回应。
编辑:我知道它已经有一段时间,但我终于找到我再次通过什么:
答
什么是关于capistrano的重量级?如果你想同步文件,那么确保rsync非常棒。但如果你需要做数据库更新,那么cap可不是那么糟糕?
我正在做同样的事情,但最近它让我觉得这实在不是原子的。对于经常使用的网站来说不是最佳的(人们可能在不是所有文件都被rsynced的破碎阶段访问它)。 – Gilles 2008-10-03 19:34:33
我会补充说,更好的做法是将rsync同步到文件夹A,而文件夹B包含您的实时网站,然后通过覆盖指向当前实时版本的符号链接来切换A到B。然后下一次,rsync到B. – Gilles 2008-10-03 19:36:09