【发布时间】:2010-11-13 16:37:55
【问题描述】:
我在将 Rails 应用程序部署到我的服务器时遇到问题。执行一个
cap deploy
我收到很多错误,指出 chmod 无法更改(且仅)git 对象文件的权限:
...
** [out :: ██████████████] chmod: changing permissions of `/srv/www/kunsthof/releases/20101113162736/.git/objects/04/779c6d894bbea4c26d6e035f71cd1ab124cc90': Operation not permitted
...
failed: "sh -c 'chmod -R g+w /srv/www/kunsthof/releases/20101113162736'" on ██████████████
文件放在部署本身上,因此部署用户应该可以更改他们的权限。关于这里可能出现的问题有什么建议吗?
【问题讨论】:
-
那么在那个错误之后会出现很多 chmod 无法触及目标文件的错误?您能否继续并过于小心,并发布目标文件的所有者/组/权限以及 chmod 成功的文件?
-
Capistrano 立即回滚部署,因此部署目标之后为空。有没有办法防止 Capistrano 在失败后自动清理?
-
执行 Capistrano 执行的命令后,我看到 chmod 抱怨的文件归 git 用户所有,而所有其他文件归 deploy 用户所有。
-
好吧,这就是你的问题。部署用户是克隆 repo 的用户,还是 repo 停留在那里并被拉入?无论如何,为什么它需要所有内容都是可组写的?我不使用 capistrano,因此很难提供具体帮助 - 但不知何故,您需要阻止它尝试 chmod 那些文件,或者让它有可能做到这一点。
-
您对 capistrano 使用什么策略,这些文件可能是在单独目录中检出的文件的副本(通常是共享/缓存...-不确定确切名称)-然后是缓存中的那些文件可以有不同的权利
标签: ruby-on-rails git deployment capistrano