Deployment 如何在服务器上更新web应用程序?

Deployment 如何在服务器上更新web应用程序?,deployment,web-applications,maintenance,administration,Deployment,Web Applications,Maintenance,Administration,我知道,但它对我来说有点太重了。我个人设置了两个存储库,一个在生产服务器上,另一个在本地开发机器上。通常,当新功能准备就绪时,我会将更改从本地计算机上的存储库推送到服务器上的存储库,然后在服务器上更新。这是在多台计算机上保持文件同步的一种非常简单快捷的方法,但无助于更新数据库 您对这个问题的解决方案是什么?我以前使用git push发布到我的web服务器,但最近我刚刚使用了rsync。我试图使我的网站尽可能不知道它在哪里运行(使用相对路径等),到目前为止,它运行得相当好。唯一的挑战是保持数据库同

我知道,但它对我来说有点太重了。我个人设置了两个存储库,一个在生产服务器上,另一个在本地开发机器上。通常,当新功能准备就绪时,我会将更改从本地计算机上的存储库推送到服务器上的存储库,然后在服务器上更新。这是在多台计算机上保持文件同步的一种非常简单快捷的方法,但无助于更新数据库


您对这个问题的解决方案是什么?

我以前使用git push发布到我的web服务器,但最近我刚刚使用了rsync。我试图使我的网站尽可能不知道它在哪里运行(使用相对路径等),到目前为止,它运行得相当好。唯一的挑战是保持数据库同步,为此,我通常使用生产数据库作为主数据库,定期备份并导入测试数据库。

@Andrew

要使用git push部署您的站点,您需要首先在.git/config文件中设置一个远程服务器以将其推送到。然后,您需要配置一个钩子,它基本上执行git重置——很难将刚才复制到存储库的代码复制到工作目录

我知道这有点含糊不清,但我实际上在切换到rsync后删除了服务器端的.git文件夹,因此我没有实现这一神奇效果的确切脚本。不过,这可能是完整问题的一个很好的候选者,这样你可能会得到更多的回答

编辑:我知道已经有一段时间了,但我终于找到了我再次使用的东西:


我想你说的是RubyonRails

查看HowTo wiki:


或者,如果您喜欢Python。

capistrano的重量级是什么?如果你想同步文件,那么请确保rsync是伟大的。但是,如果您需要进行数据库更新,那么cap可能没那么糟糕吧?

我也这么做,但最近它让我觉得这真的不是原子级的。对于经常使用的网站而言,这不是最佳选择(人们可能会在一个不完整的阶段访问它,而不是所有的文件都已重新同步)。我要补充的是,一个更为理想的方法是重新同步到文件夹a,而文件夹B包含您的实时网站,然后通过覆盖指向当前实时版本的符号链接,从a切换到B。然后下一次,rsync到B。关于结构的更多细节:链接现在是404