0

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

  1. 将 .swf 复制到一个传输目录中,该目录也是一个 hg (mercurial) 存储库。
  2. hg push我的 slicehost VPN 的变化
  3. ssh到我的 slicehost VPN
    • cd到我的传输目录和hg up
    • su www并将cp更改后的文件放入我的公共文件夹以供查看。

我想自动化这个过程。最好的情况是:

  1. 将 .swf 复制到“快速部署”目录中
  2. 运行一个本地脚本来完成上述所有操作。

我对感兴趣:

  • 关于将密码放在哪里的建议,因为我需要su www将文件传输到公共网络目录。
  • 如何处理本地机器和服务器之间的责任划分。

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

最终,我想将它构建到一个可以处理我适度部署需求的系统中。也许有一个开源部署系统可以处理这种情况和其他类型的情况?我可能会为当前的需求自行开发,但从长远来看,我想要一些相对灵活的东西。

注意:我的家用开发计算机是 OS X,目标服务器是一些最新版本的 Ubuntu。我更喜欢基于 python 的解决方案,但如果最好从 shell 处理,我可以毫无问题地将它放在一起。

4

2 回答 2

1

如果你对 Python 很熟悉,我推荐Fabric用于自动部署脚本。

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

于 2010-01-18T17:30:05.980 回答
1

为了避免su www,我看到两个简单的选择。

  • 在网络服务器能够提供服务的某个路径中创建一个对您可写且可由 www 组读取的文件夹,然后您可以从本地计算机上的某个位置同步到该文件夹​​。

  • 将您的公共 ssh 密钥放入 www 的 authorized_keys 并 rsync 到 www 用户(在某些设置中可能安全性稍差,但不多,而且通常更方便)。

通过su www将您或其密码放在某个文件中来解决问题似乎远没有那么安全。

要调用的脚本"rsync -avz --partial /some/path www@server:some/other/path"应该很快用 python 编写(虽然我不擅长 python)。

于 2010-01-18T09:41:33.177 回答