7

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

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

所以在使用 cap:setup 时,我希望 capistrano 使用 root:www-data chown 文件夹

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

这个问题可能来自哪里的任何想法?

信息:我正在使用系统范围的 rvm。

4

3 回答 3

9

至于我的理解,您应该手动进行,设置的作用是使用用户登录,而不是设置目录的权限。

我没有找到 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 在评论中提到的更好的做法是使用单独的用户来完成这个任务并将他的组设置为适当的组,那么它就不需要上述任务并且会自动工作。

于 2012-06-24T23:55:03.350 回答
2

只是插话:在 Capistrano 源代码中没有提到 :group。我想这是一个货物崇拜的选择。:user 选项仅用于 SSH 连接。

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

于 2012-09-01T21:24:12.963 回答
2

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

  1. 首先,创建另一个用户来部署(正如 Julien 建议的那样)。
    说我们叫他deployer
  2. 然后使用他进行 SSH 连接
    set :user, 'deployer'
  3. 最后,我们不想被使用sudo,所以通过添加
    set :use_sudo, false
    到您的deploy.rb.
于 2013-03-05T00:55:43.193 回答