Python 跨服务器分发代码的最佳方式是什么?

Python 跨服务器分发代码的最佳方式是什么?,python,software-distribution,Python,Software Distribution,我有一个python程序、类和包的目录,目前我将这些程序、类和包分发到5台服务器。看起来我会不断地添加更多的服务器,现在我只是在做一个基本的rsync,从我的本地盒子到服务器 在n台服务器上分发代码的更好方法是什么 谢谢首先,确保所有代码都处于修订控制之下(如果您还没有这样做),这样您就可以从存储库中签出新版本的代码,而不必从工作站将其复制到服务器上 有了修订控制,您可以使用一个工具,例如自动签出每个服务器上的代码,而无需登录到每台机器并进行手动签出 有了这样的设置,将新版本部署到所有服务器就可

我有一个python程序、类和包的目录,目前我将这些程序、类和包分发到5台服务器。看起来我会不断地添加更多的服务器,现在我只是在做一个基本的rsync,从我的本地盒子到服务器

在n台服务器上分发代码的更好方法是什么


谢谢

首先,确保所有代码都处于修订控制之下(如果您还没有这样做),这样您就可以从存储库中签出新版本的代码,而不必从工作站将其复制到服务器上

有了修订控制,您可以使用一个工具,例如自动签出每个服务器上的代码,而无需登录到每台机器并进行手动签出

有了这样的设置,将新版本部署到所有服务器就可以像运行

$ cap deploy
从本地计算机。

我使用with来部署所有源代码。Fabric是用python编写的,因此很容易入门。更新生产服务非常简单,只需
fab production deploy
。最后做了这样的事情:

  • 关闭所有服务并显示“正在升级”页面
  • 更新源代码目录
  • 运行所有迁移
  • 启动所有服务

  • <> P>这是非常可怕的看到这一切都会自动发生。

    同时我也使用版本控制来做到这一点,你可以考虑的另一个方法是使用你的主机系统使用的任何包管理(例如RPMS或DPKG)打包源代码,并设置系统使用自定义存储库,然后进行“APT GET升级”或“yum update”将更新系统上的软件。然后您可以使用“mush”之类的命令在所有工具上运行stop/update/start命令

    理想情况下,您应该首先将其推送到“测试”存储库中,让您的暂存系统安装它,一旦该存储库的测试完成,您就可以将其移动到生产存储库中

    这与一般使用结构或版本控制的建议非常相似,只是另一种可能更适合某些人的替代方法

    使用软件包的缺点是,您可能正在使用版本控制,并且您必须管理这些软件包的版本号。我使用版本控制中的修订标签来执行此操作,因此我可以同样轻松地在目标系统上执行“svn更新”或类似操作

    在这两种情况下,您可能需要考虑从一个版本迁移到下一个版本。如果用户加载包含其他元素的引用的页面,则进行更新,并且这些元素消失,您会做什么?您可能希望在部署脚本中或在第一次推出版本的代码中做一些事情。新页面,但保留旧的引用元素,部署该元素,然后删除引用元素并稍后部署


    这样,用户就不会在页面中看到损坏的元素。

    fabric
    -我整个成年生活都在寻找这个。