2012-06-24 16 views
6

Nel mio deploy-lima ho impostato il gruppo www-data:Distribuzione con Capistrano fa ignorare l'impostazione gruppo

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

così quando si utilizza cap: messa a punto che mi aspettavo Capistrano a chown le cartelle con root: www-data

Ma tutte le cartelle e i file sono root: root.

Qualche idea da cui potrebbe derivare questo problema?

Informazioni: Sto utilizzando system-wide-rvm.

+2

Questa è una pratica piuttosto brutta da implementare come root, suggerisco di creare un utente e distribuire con esso. –

risposta

8

Per quanto ne so, è necessario farlo manualmente, quale configurazione è per utilizzare l'utente per accedere, non per impostare i diritti sulla directory.

Non ho trovato alcuna impostazione di gruppo per capistrano, forse stavi usando delle estensioni per questo?

Che cosa si potrebbe fare per cambiare potrebbe essere:

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

Ma in primo luogo, non si deve usare radice per la distribuzione, come @Julian cita nel commento più pratica è quella di utilizzare utente separato per questo compito e impostare il proprio gruppo su un gruppo appropriato, quindi non richiederà l'attività sopra descritta e funzionerà automaticamente.

+0

Non so perché non funziona più, ma questo aiuta, THX. Lavorando sulla modifica alla distribuzione non-root ma questo offre molti nuovi problemi – PascalTurbo

+0

Dio, stavo spensieratamente usando 'set: group' per anni! Mai notato, perché di solito il mio nome utente e il mio gruppo sono uguali :) –

2

Appena in arrivo: c'è senza menzione di: gruppo in codice sorgente Capistrano qualunque. Suppongo che sia un'opzione cult di carico. E l'opzione: user è utilizzata solo per la connessione SSH.

Per quanto riguarda la tua domanda, le directory e i file creati da Capistrano sono creati con le autorizzazioni predefinite, mai in alcun modo chown s; se si sta implementando come root, apparterranno a root:root.

2

Meglio di fissazione di un problema non sta avendo in primo luogo:

  1. In primo luogo, creare un altro utente da distribuire con (as Julien suggests).
    Diciamo che lo chiamiamo deployer.
  2. Poi gli utilizzare per la connessione SSH
    set :user, 'deployer'
  3. Infine, noi non vogliamo essere l'uso sudo, in modo da spegnerlo con l'aggiunta di
    set :use_sudo, false
    al vostro deploy.rb.
+0

Quando faccio questo, apache non può leggere i file poiché è in esecuzione su un altro utente/gruppo per l'utente del deployer. Se poi chown manualmente -R per l'utente del webserver, il sito funziona. Eventuali suggerimenti? –

+1

@ joshua.paling Che ne pensi di aggiungere il deployer al gruppo www-data? Questo ha funzionato per me. (Ubuntu: '' 'sudo adduser deployer www-data''') – marvin

Problemi correlati