我有一组二进制资产(swf文件),每个资产的大小约为150Kb。我在家用计算机上本地开发它们,我想定期部署它们以供审查。我目前的策略是:
hg push
对slicehost VPN的更改ssh
到我的slicehost VPN上
cd
到我的转移目录和hg up
su www
和cp
已更改的文件进入我的公共文件夹以供查看。我想自动化这个过程。最佳案例场景接近:
我感兴趣的是:
su www
将文件传输到公共Web目录。 我认为使用rsync是比hg更好的工具,因为我不需要这些类型的更改的修订历史记录。我可以把它写成python脚本,shell脚本或者被认为是最佳实践。
最终我想把它构建成一个可以满足我适度部署需求的系统。也许有一个开源部署系统可以处理这种情况和其他类型的情况?我可能会根据当前的需要推出自己的产品,但从长远来看,我想要一些相对灵活的东西。
注意:我的家庭开发计算机是OS X,目标服务器是最近的一些Ubuntu。我更喜欢基于python的解决方案,但是如果最好从shell处理这个问题,那么将它放在一起就没问题了。
答案 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,因此您可以将安全隐含最小化。