Capistrano развернуть, как использовать use_sudo и admin_runner - PullRequest
6 голосов
/ 05 декабря 2011

Я пытаюсь настроить Capistrano так, чтобы он работал для настройки нашего сервера. Мы разворачиваем проекты Symfony, поэтому я также использую Capifony. У меня все еще возникают проблемы с разрешениями.

На нашем сервере каждый проект выполняется как пользователь проекта, поэтому у каждого проекта есть свой пользователь. Поэтому я настроил use_sudo и установил его в true, и я настроил admin_runner как пользователя проекта. Но это все равно не сработало, поэтому я изменил capifony, чтобы начать использовать try_sudo вместо обычного запуска. Что заставило его работать немного лучше. Но я немного запутался в том, что использовать в этом случае. У вас есть try_sudo, sudo и запустить. Но какой нужен для какого варианта использования?

  • Когда вы используете Запустите Я думаю, что это всегда будет ваш локальный пользователь
  • try_sudo Я думаю, что проверит, если флаг use_sudo имеет значение true, если это так, он будет использовать команду sudo, если нет, то будет использовать локальный пользователь. Если у вас настроен admin_runner, он будет доступен пользователю, настроенному как admin_runner
  • sudo всегда будет пытаться sudo

Теперь моя проблема заключается в методе deploy: symlink, это также обычная команда run, поэтому она выполняется как локальный пользователь, что выдает проблемы с правами доступа при попытке просмотра веб-сайта.

Так может кто-нибудь сказать мне, если мое описание 3 команд является правильным? а также кто-нибудь знает, как предполагается использовать admin_runner и use_sudo, так что символическая ссылка также выполняется правильно (а также все другие команды, выполняемые capistrano)?

С уважением,

Даан

1 Ответ

4 голосов
/ 02 марта 2012

Извиняюсь за такой запоздалый ответ, Даан. Ваше понимание Capistrano верно. Также обратите внимание, что флаг :use_sudo по умолчанию равен true.

В Capistrano 2.11.2 вы найдете lib / capistrano / configuration / variables.rb:

_cset(:run_method)        { fetch(:use_sudo, true) ? :sudo : :run }

и lib / capistrano / recipes / deploy.rb:

def try_sudo(*args)
  options = args.last.is_a?(Hash) ? args.pop : {}
  command = args.shift
  raise ArgumentError, "too many arguments" if args.any?

  as = options.fetch(:as, fetch(:admin_runner, nil))
  via = fetch(:run_method, :sudo)
  if command
    invoke_command(command, :via => via, :as => as)
  elsif via == :sudo
    sudo(:as => as)
  else
    ""
  end
end

Возможно, ваша проблема с правами доступа связана с тем, что ваш сервер, работающий как обычный пользователь, не может прочитать содержимое каталога выпуска, на который указывает ваша символическая ссылка current?

...