使用capistrano进行部署会忽略组设置

时间:2012-06-24 11:28:02

标签: rvm capistrano chmod rvm-capistrano

在我的部署文件中,我将组设置为www-data:

set :user,            "root"
set :group,           "www-data"

所以当使用cap:setup我希望capistrano用root:www-data

chown文件夹

但是所有文件夹和文件都是root:root。

这个问题可能来自哪些想法?

信息:我正在使用system-wide-rvm。

3 个答案:

答案 0 :(得分:8)

至于我的理解你应该手动完成,设置是做什么的 使用用户登录,而不是设置目录的权限。

我没有找到capistrano的组设置,也许你正在使用它的一些扩展名?

你可以做些什么来改变它:

after "deploy:setup", :setup_group
task :setup_group do
  run "chown -R :#{group} #{deploy_to} && chmod -R g+s #{deploy_to}"
end

但首先你不应该使用 root 进行部署,因为@Julian在评论中提到更好的做法是使用单独的用户执行此任务并将他的组设置为正确的组,然后它不会需要上述任务并自动完成。

答案 1 :(得分:2)

只是简单地说:没有提到:Capistrano源代码中的组。我想这是一个货物崇拜选择。并且:user选项仅用于SSH连接。

关于你的问题,Capistrano创建的目录和文件是使用默认权限创建的,它绝不会chown以任何方式使用它们;如果您要部署为root,那么它们将属于root:root

答案 2 :(得分:2)

比解决问题更好的是首先没有它:

  1. 首先,创建另一个用(as Julien suggests)部署的用户 假设我们称他为deployer
  2. 然后使用他进行SSH连接
    set :user, 'deployer'
  3. 最后,我们不想使用sudo,因此请添加左侧将其关闭 set :use_sudo, false
    到你的deploy.rb