2011-12-05 14 views
6

Estoy intentando configurar Capistrano para que funcione para la configuración de nuestro servidor. Estamos implementando proyectos de Symfony, así que también estoy usando capifony. Todavía estoy experimentando algunos problemas con los permisos.Capistrano implementa cómo usar use_sudo y admin_runner

En nuestro servidor, cada proyecto se ejecuta como un usuario de proyecto, por lo que cada proyecto tiene su propio usuario. Así que configuré use_sudo y lo configuré en true y configuré admin_runner para ser el usuario del proyecto. Pero todavía no funcionó, así que modifiqué la capifonía para comenzar a usar try_sudo en lugar de la ejecución normal. Lo que lo hizo funcionar un poco mejor. Pero estoy un poco confundido sobre qué usar en qué caso. Tienes try_sudo, sudo y run. ¿Pero cuál es necesario para qué caso de uso?

  • Cuando se utiliza plazo Creo que siempre será su usuario local
  • try_sudo creo que va a comprobar si la bandera use_sudo es cierto si lo que va a utilizar el comando sudo, si no lo hará usa el usuario local. Si ha admin_runner configurado lo hará sudo para el usuario configurado como admin_runner
  • sudo siempre tratará de sudo

Ahora mi problema es el despliegue: Método de enlace simbólico esto también es simplemente un comando normal funcionamiento por lo que se ejecuta como el usuario local, lo que genera problemas de permisos cuando intento ver el sitio web.

¿Puede alguien decirme si mi descripción de los 3 comandos es correcta? y también, ¿alguien sabe cómo se supone que admin_runner y use_sudo se utilizarán, de modo que el enlace simbólico también se está haciendo correctamente (y también todos los demás comandos realizados por capistrano)?

saludos cordiales,

Daan

+0

Tenga en cuenta que capifony todavía no se ocupa de ': use_sudo' o' admin_runner'. –

Respuesta

4

Disculpas por una respuesta tan tardía Daan. Tu comprensión de Capistrano es correcta. Tenga en cuenta también que el indicador :use_sudo se establece de manera predeterminada en true.

En Capistrano 2.11.2, encontrará lib/Capistrano/configuración/variables.rb:

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

y lib/Capistrano/recetas/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 

Tal vez su problema de permisos implica que su servidor, ejecutándose como un usuario normal, no puede leer el contenido del directorio de publicación al que apunta su enlace simbólico current?