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

问题描述 投票:7回答:3

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

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

因此,当使用上限时:我希望capistrano用root:www-data chown文件夹

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

这个问题可能来自何方?

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

rvm capistrano chmod rvm-capistrano
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在评论中提到更好的做法是使用单独的用户执行此任务并将他的组设置为正确的组,然后它将不需要上述任务并且将自动工作。


2
投票

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

至于你的问题,目录和Capistrano的创建与默认权限创建文件,它从未chown Š以任何方式; 如果您以root身份部署,那么它们将属于root:root


2
投票

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

  1. 首先,创建另一个用户部署( 如Julien建议的那样 )。
    假设我们称他为deployer
  2. 然后使用他进行SSH连接
    set :user, 'deployer'
  3. 最后,我们不想使用sudo ,所以通过添加将其关闭
    set :use_sudo, false
    到您的deploy.rb
© www.soinside.com 2019 - 2024. All rights reserved.