我有一个 python 程序、类和包的目录,我目前分发到 5 个服务器。看来我将不断添加更多服务器,而现在我只是从本地机器到服务器进行基本的 rsync。
在 n 个服务器上分发代码的更好方法是什么?
谢谢
我有一个 python 程序、类和包的目录,我目前分发到 5 个服务器。看来我将不断添加更多服务器,而现在我只是从本地机器到服务器进行基本的 rsync。
在 n 个服务器上分发代码的更好方法是什么?
谢谢
首先,确保将所有代码保持在版本控制之下(如果您还没有这样做的话),这样您就可以从存储库中签出新版本的代码,而不必将其从工作站复制到服务器。
有了版本控制,您可以使用Capistrano等工具自动签出每台服务器上的代码,而无需登录每台机器并进行手动签出。
通过这样的设置,将新版本部署到所有服务器可以像运行一样简单
$ cap deploy
从您的本地计算机。
虽然我也使用版本控制来执行此操作,但您可能考虑的另一种方法是使用您的主机系统使用的任何包管理(例如 RPM 或 dpkgs)来打包源代码,并将系统设置为使用自定义存储库然后“ apt-get upgrade”或“yum update”将更新系统上的软件。然后你可以使用“mussh”之类的东西在所有工具上运行停止/更新/启动命令。
理想情况下,您首先将其推送到“测试”存储库,让您的登台系统安装它,一旦签署了该测试,您就可以将其移动到生产存储库。
它与一般使用结构或版本控制的建议非常相似,只是另一种可能更适合某些人的选择。
使用包的缺点是您可能无论如何都在使用版本控制,并且您必须管理这些包的版本号。我在版本控制中使用修订标签来执行此操作,因此我可以在目标系统上轻松执行“svn update”或类似操作。
无论哪种情况,您都可能需要考虑从一个版本迁移到下一个版本。如果用户加载包含对其他元素的引用的页面,您进行更新并且这些元素消失了,您会怎么做?您可能希望在您的部署脚本中或在您的代码中做一些事情,您首先推出一个带有新页面的版本,但保留旧的引用元素,部署它,然后删除引用的元素并稍后部署它。
这样用户就不会在页面中看到损坏的元素。