我有一个目录分发给5个服务器的python程序,类和包。看来我不断地增加更多的服务器,现在我只是从我的本地盒子到服务器做一个基本的rsync。跨服务器分发代码的最佳方式是什么?
在n个服务器上分发代码的更好方法是什么?
感谢
我有一个目录分发给5个服务器的python程序,类和包。看来我不断地增加更多的服务器,现在我只是从我的本地盒子到服务器做一个基本的rsync。跨服务器分发代码的最佳方式是什么?
在n个服务器上分发代码的更好方法是什么?
感谢
首先,请务必保留所有的代码版本控制下(如果你还没有这样做),这样就可以从仓库检出,而不必复制代码的新版本它从您的工作站到服务器。
使用版本控制,您可以使用诸如Capistrano之类的工具自动检出每台服务器上的代码,而无需登录每台机器并进行手动结账。
有了这样的设置,部署一个新版本的所有服务器可以从本地机器上运行
$ cap deploy
一样简单。
虽然我也使用版本控制来做到这一点,但您可能考虑的另一种方法是使用主机系统使用的任何软件包管理(例如RPM或dpkgs)打包源文件,并将系统设置为使用自定义存储库然后,“apt-get upgrade”或“yum update”将更新系统上的软件。然后你可以使用诸如“mussh”之类的东西来运行所有工具上的stop/update/start命令。
理想情况下,您应先将其推送到“测试”存储库,让您的分段系统安装它,并且一旦您的测试已经签署,您就可以将其移至生产存储库。
这与一般使用结构或版本控制的建议非常相似,只是另一种可能更适合某些人的替代方案。
使用软件包的缺点是您可能使用版本控制,您必须管理这些软件包的版本号。我在版本控制中使用修订标记来完成此操作,因此我可以在目标系统上轻松地执行“svn update”或类似操作。
无论哪种情况,您都需要考虑从一个版本迁移到下一个版本。如果用户加载包含对其他元素的引用的页面,则会执行更新并且这些元素消失,那么您会做什么?您可能希望在部署脚本中执行某些操作,或者在代码中先用新页面推出某个版本,然后保留旧的引用元素,然后部署该元素,然后删除引用的元素并稍后进行部署。
用这种方式,用户不会在页面内看到破碎的元素。
'fabric' - 我一直在寻找这个我的整个成年生活。 – 2010-06-19 12:12:22