2012-06-24 9 views
6

En mi deploy-archivo fijo el grupo a www-data:Desplegar con Capistrano hace ignorar la configuración de grupo

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

por lo que cuando el uso de la tapa: configuración que esperaba Capistrano a chown las carpetas con la raíz: www-data

Pero todas las carpetas y archivos son raíz: raíz.

¿Alguna idea de dónde podría venir este problema?

Información: Estoy usando system-wide-rvm.

+2

Esta es una práctica bastante mala para implementar como root, sugiero crear un usuario y desplegar con él. –

Respuesta

8

en cuanto a mi comprensión, debe hacerlo manualmente, lo que hace la configuración es utilizar el usuario para iniciar sesión, no para establecer los derechos en el directorio.

No he encontrado ninguna configuración de grupo para capistrano, ¿tal vez usted estaba usando algunas extensiones para ello?

Lo que podría hacer para cambiarlo podría ser:

after "deploy:setup", :setup_group 
task :setup_group do 
    run "chown -R :#{group} #{deploy_to} && chmod -R g+s #{deploy_to}" 
end 

Pero en primer lugar que no se debe utilizar raíz para el despliegue, como se menciona en el comentario @Julian mejor práctica es utilizar usuario separada para este tarea y establecer su grupo al grupo adecuado, entonces no requerirá la tarea anterior y funcionará automáticamente.

+0

No sé por qué ya no funciona, pero esto ayuda, THX. Trabajando en el cambio a la implementación no-raíz, pero esto ofrece muchos problemas nuevos – PascalTurbo

+0

¡Dios, estaba usando sin pensar 'set: group' durante años! Nunca me di cuenta, porque generalmente mi nombre de usuario y grupo son los mismos :) –

2

Simplemente sonando en: hay ninguna mención de: grupo en el código fuente de Capistrano sea cual sea. Supongo que es una opción de culto a la carga. Y la opción: usuario solo se usa para la conexión SSH.

En cuanto a su pregunta, los directorios y archivos que crea Capistrano se crean con los permisos predeterminados, nunca chown s ellos de ninguna manera; si está implementando como root, entonces pertenecerá a root:root.

2

Mejor que la fijación de un problema es no tener que en el primer lugar:

  1. primer lugar, crear otro usuario para desplegar con (as Julien suggests).
    Digamos que lo llamamos deployer.
  2. luego lo utilizan para la conexión SSH
    set :user, 'deployer'
  3. Por último, no queremos ser el uso sudo, por lo apagarlo mediante la adición de
    set :use_sudo, false
    a su deploy.rb.
+0

Cuando hago esto, apache no puede leer los archivos, ya que se está ejecutando bajo un usuario/grupo diferente para el usuario implementador. Si luego selecciono manualmente -R al usuario del servidor web, el sitio funciona. ¿Alguna sugerencia? –

+1

@ joshua.paling ¿Qué hay de agregar el implementador al grupo www-data? Esto funcionó para mí. (Ubuntu: '' 'sudo adduser deployer www-data''') – marvin

Cuestiones relacionadas