如何部署高度迭代的更新

时间:2010-01-18 09:25:14

标签: python macos deployment ubuntu rsync

我有一组二进制资产(swf文件),每个资产的大小约为150Kb。我在家用计算机上本地开发它们,我想定期部署它们以供审查。我目前的策略是:

  1. 将.swf复制到一个也是hg(mercurial)repo的传输目录中。
  2. hg push对slicehost VPN的更改
  3. ssh到我的slicehost VPN上
    • cd到我的转移目录和hg up
    • su wwwcp已更改的文件进入我的公共文件夹以供查看。
  4. 我想自动化这个过程。最佳案例场景接近:

    1. 将.swf复制到“快速部署”目录
    2. 运行一个本地脚本来完成上述所有操作。
    3. 我感兴趣的是:

      • 建议放置密码的位置,因为我需要su www将文件传输到公共Web目录。
      • 如何处理本地计算机和服务器之间的责任分工。

      我认为使用rsync是比hg更好的工具,因为我不需要这些类型的更改的修订历史记录。我可以把它写成python脚本,shell脚本或者被认为是最佳实践。

      最终我想把它构建成一个可以满足我适度部署需求的系统。也许有一个开源部署系统可以处理这种情况和其他类型的情况?我可能会根据当前的需要推出自己的产品,但从长远来看,我想要一些相对灵活的东西。

      注意:我的家庭开发计算机是OS X,目标服务器是最近的一些Ubuntu。我更喜欢基于python的解决方案,但是如果最好从shell处理这个问题,那么将它放在一起就没问题了。

2 个答案:

答案 0 :(得分:1)

要避免su www我看到两个简单的选择。

  • 使一个文件夹可写,并且可以通过www的组在Web服务器可以提供的某个路径中读取,然后您可以从本地计算机上的某个位置rsync到该文件夹​​。

    < / LI>
  • 将你的公共ssh密钥放在www的authorized_keys和rsync中给www用户(在某些设置中安全性稍差,但不多,通常更方便)。

通过将您或您的密码放在某个文件中来解决su www似乎远不那么安全。

调用"rsync -avz --partial /some/path www@server:some/other/path"的脚本应该在python中快速编写(虽然我不能很好地编写python)。

答案 1 :(得分:1)

如果您对Python感到满意,我建议Fabric使用自动部署脚本。

除了组权限或ssh-ing为www(使用基于密钥的身份验证)之外,权限问题的第三个解决方案是将您的用户添加到/ etc / sudoers并使用sudo(您可以指定确切的命令)您的用户可以使用sudo,因此您可以将安全隐含最小化。