目前我的工作流程如下:
我在一台机器上本地维护我正在处理的每个网站都有一个git repo,当我发布一些内容时,我压缩文件夹并通过ssh将这个单个文件上传到生产服务器然后我解压缩,测试更改a将更改移动到实时文件夹,我摆脱了.git文件夹。
我想知道在实时服务器上使用git repo是否是一个好主意,似乎最初可能会有问题,如果生产服务器上的更改看起来与本地开发机器...这可能会引发火灾...... 如何在生产服务器上的某个文件夹上创建一个裸存储库然后从那里克隆到公共文件夹,从而将更新从本地计算机推送到裸存储库并从生产服务器的公共文件夹中取出裸机...可能有人提供一些反馈。
后来我读到了关于capistrano http://capify.org但我没有这个软件的经验......
根据您的经验,完成网站部署/更新的最佳实践/方法是什么?
提前致谢并感谢您的反馈。
答案 0 :(得分:2)
我不认为我们的方法可以称为最佳实践,但它对我们有好处。
我们的应用程序有几个大型数据库(20gb +),因此在每台开发人员计算机上维护本地副本从来都不是一个选项,即使我们不针对实时数据库进行开发,我们也需要进行开发针对尽可能接近真实数据库的数据库。
因此,我们也使用中央Web服务器,并在其上保留我们的subversion主干的开发分支。通常我们不会同时在系统的同一部分上工作,但是当我们确实需要这样做,或者有人进行了大量实质性更改时,我们分支中继并在开发服务器上创建一个新的虚拟主机。 / p>
我们还检查了生产服务器上的代码,因此在完成测试后,我们只需在生产服务器上执行svn更新。我们已经实现了一个脚本,该脚本使用ssh在所有服务器上执行update命令。这非常方便,因为我们的代码库很大并且需要花费大量时间上传。 Subversion只会复制实际已经更改过的文件,因此速度要快得多。
这对我们来说非常有效,唯一要注意的是直接在生产服务器上进行更改(当然从一开始就是禁止),因为它可能会在更新时引起冲突。
答案 1 :(得分:0)
我从没想过在服务器上有一个存储库副本。阅读之后,我认为它可能很酷......但是,直接在实时环境中更新文件而不进行测试并不是一个好主意。
您应该始终更新与完全实时活动的二级环境(webserver + DB版本,如果有的话)并在那里进行测试。如果一切顺利,则将实时网站置于维护状态,更新文件,然后再次上线。
因此,我不会将实时站点作为存储库的副本,但您可以使用测试环境。您将节省SSH +压缩时间,此外您还可以查看您要测试的任何特定修订版本。
答案 2 :(得分:0)
卡皮斯特拉诺很棒。默认配方文档很不稳定,但邮件列表是活动的,设置它很容易。你在运行Rails吗?它为Rails应用程序提供了一些简洁的内置功能,但也经常与其他类型的Web应用程序一起使用。
还有Webistrano,它基于Capistrano,但有一个网络前端。我自己没用过。另一个似乎正在获得一些牵引力的部署系统,至少在Rails用户中是Vlad the Deployer。