2011-12-05 8 views
6

Próbuję skonfigurować Capistrano tak, aby działał w konfiguracji naszego serwera. Wdrażamy projekty symfony, więc używam również capifony. Nadal mam problemy z uprawnieniami.Capistrano wdraża metodę use_sudo i admin_runner

Na naszym serwerze każdy projekt działa jako użytkownik projektu, więc każdy projekt ma własnego użytkownika. Tak więc skonfigurowałem use_sudo i ustawię go na true i skonfigurowałem admin_runner jako użytkownika projektu. Ale nadal nie działało, więc zmodyfikowałem capifony, by zacząć używać try_sudo zamiast zwykłego przebiegu. Co sprawiło, że działało trochę lepiej. Ale jestem trochę zdezorientowany tym, co używać w takim przypadku. Masz try_sudo, sudo i uciekaj. Ale który jest potrzebny w przypadku użycia?

  • Podczas korzystania bieg myślę, że to zawsze będzie lokalny użytkownik
  • try_sudo myślę, że będzie sprawdzić, czy flaga use_sudo jest prawdą czy nie, jeśli tak to będzie to będzie użyć polecenia sudo użyj lokalnego użytkownika. Jeśli admin_runner skonfigurowany to będzie sudo do użytkownika skonfigurowanego jako admin_runner
  • sudo zawsze będzie dążył do sudo

Teraz mój problem jest wdrożyć: metoda symlink jest to również tylko polecenie uruchomienia regularnych więc wykonuje się jako użytkownik lokalny, co daje problemy z uprawnieniami podczas próby wyświetlenia strony.

Czy ktoś może mi powiedzieć, czy mój opis 3 poleceń jest poprawny? a także czy ktoś wie, w jaki sposób admin_runner i use_sudo ma być używane, aby dowiązanie symboliczne było również wykonywane poprawnie (a także wszystkie inne polecenia wykonywane przez Capistrano)?

pozdrowienia rodzaju,

Daan

+0

Zauważ, że capifony jeszcze nie dba o ': use_sudo' lub' admin_runner'. –

Odpowiedz

4

Przepraszam za taki opieszały odpowiedzi Daan. Twoje zrozumienie Capistrano jest poprawne. Zauważ również, że flaga :use_sudo domyślnie przyjmuje wartość true.

W Kapistrana 2.11.2, znajdziesz lib/capistrano/Konfiguracja/variables.rb:

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

i lib/CAPISTRANO/przepisy/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 

Może problem związany z uprawnieniami dotyczy Twojego serwera, działającego jako zwykły użytkownik, który nie jest w stanie odczytać zawartości katalogu wydania, do którego prowadzi dowiązanie symboliczne, do którego prowadzi dowiązanie symboliczne current?