我在将 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 ██████████████
文件放在部署本身上,因此部署用户应该可以更改他们的权限。关于这里可能出现的问题有什么建议吗?
最佳答案
如果您使用缓存副本,通常在部署时,您的 repo 将被克隆到一个共享目录,并将被 rsynced/copied 到当前发布目录。在应对时,您应该使用以下变量排除 .git 目录和其他不必要的目录,如 spec/test(不会在生产中使用):
set :copy_exclude, [".git", "spec"]
有了这个,您就不会复制 .git 目录,并且之后在执行 chmod 时不应该面临权限问题。
关于ruby-on-rails - Capistrano:部署权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4173537/