Развертывание с помощью capistrano игнорирует настройку группы

В моем файле развертывания я установил группу www-data:

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

поэтому при использовании cap:setup я ожидал, что capistrano выделит папки с root:www-data

Но все папки и файлы имеют root:root.

Есть идеи, откуда может появиться эта проблема?

Информация: я использую общесистемный-rvm.


person PascalTurbo    schedule 24.06.2012    source источник
comment
Это довольно плохая практика для развертывания с правами root, я предлагаю создать пользователя и выполнить развертывание с ним.   -  person Julien Pellet    schedule 25.06.2012


Ответы (3)


насколько я понимаю, вы должны сделать это вручную, что делает установка, так это использовать пользователя для входа в систему, а не для установки прав на каталог.

Я не нашел настройки группы для 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 в комментарии, лучше всего использовать отдельного пользователя для этой задачи и установить его группу в правильную группу, тогда это не потребует вышеуказанного задача и будет работать автоматически.

person mpapis    schedule 24.06.2012
comment
Не знаю, почему это больше не работает, но это помогает, THX. Работаем над переходом на развертывание без полномочий root, но это создает много новых проблем. - person PascalTurbo; 26.06.2012
comment
Боже, я бездумно использовал set :group годами! Никогда не замечал, потому что обычно мой логин и группа совпадают :) - person Sergio Tulentsev; 15.03.2013

Просто добавлю: в исходном коде Capistrano вообще нет упоминания о :group. Я полагаю, это карго-культовый вариант. А опция :user используется только для SSH-подключения.

Что касается вашего вопроса, каталоги и файлы, которые создает Capistrano, создаются с разрешениями по умолчанию, он никогда не chown их никоим образом; если вы развертываете как root, то они будут принадлежать root:root.

person Leonid Shevtsov    schedule 01.09.2012

Лучше, чем решить проблему, не иметь ее вообще:

  1. Сначала создайте другого пользователя для развертывания (как предлагает Жюльен).
    Допустим, мы назовем его deployer.
  2. Затем используйте его для подключения по SSH
    set :user, 'deployer'
  3. Наконец, мы не хотим использовать sudo, поэтому отключите его, добавив
    set :use_sudo, false
    к вашему deploy.rb.
person Marius Butuc    schedule 05.03.2013
comment
Когда я это делаю, apache не может читать файлы, так как он работает под другим пользователем/группой, чем пользователь-деплойер. Если я затем вручную укажу -R пользователю веб-сервера, сайт заработает. Какие-либо предложения? - person joshua.paling; 12.08.2013
comment
@joshua.paling Как насчет добавления развертывателя в группу www-data? Это сработало для меня. (Убунту: sudo adduser deployer www-data) - person marvin; 15.08.2013