2015-03-26 26 views
6

Rails 4.1 su Ubuntu 14.04 con rbenv e ruby ​​2.2.1.Come posso far funzionare l'app per il riavvio di Config dei passeggeri?

Utilizzando Capistrano con la gemma Capistrano passeggeri, ma il riavvio alla fine fallisce:

INFO [8213c63a] Running /usr/bin/env passenger-config restart-app /home/deployer/my_app --ignore-app-not-running as [email protected] 
DEBUG [8213c63a] Command: passenger-config restart-app 
DEBUG [8213c63a] Please pass either an app path prefix or an app group name. See --help for more information. 

Quando provo ad eseguire questo comando dalla riga di comando tramite SSH, ottengo questo:

[email protected]:~/app/shared/config$ passenger-config restart-app 
*** ERROR: You are not authorized to query the status for this 

Cosa sto facendo di sbagliato qui?

sto usando Apache, ecco le parti rilevanti della mia /etc/apache2/apache2.conf:

LoadModule passenger_module /home/deployer/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.5/buildout/apache2/mod_passenger.so 
    <IfModule mod_passenger.c> 
    PassengerRoot /home/deployer/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.5 
    PassengerDefaultRuby /home/deployer/.rbenv/versions/2.2.1/bin/ruby 
    </IfModule> 

<VirtualHost *:80> 
     ServerName mysite.name.com 
     # !!! Be sure to point DocumentRoot to 'public'! 
     DocumentRoot /home/deployer/myssite/current/public 
     <Directory /home/deployer/mysite/current/public> 
     # This relaxes Apache security settings. 
     AllowOverride all 
     # MultiViews must be turned off. 
     Options -MultiViews 
     # Uncomment this if you're on Apache >= 2.4: 
     Require all granted 
     </Directory> 
    </VirtualHost> 
+0

Ho appena riscontrato lo stesso problema (Ubuntu 14.04, Apache + mod_passwnger, Rbenv, Ruby 2.0.0p594, Rails 4.1, Capistrano 3.4.0). Sto calcolando a metà, in questo momento, ma maggiori informazioni potrebbero aiutarti a risolvere il problema. Stai usando Apache o nginx? Se stai usando Apache, puoi mostrare le linee DocumentRoot e Passenger * dalla tua configurazione di Apache? –

risposta

7

Ecco cosa mi ha fatto correre, ho aggiunto questo al mio conifg/deploy.rb:

set :passenger_restart_with_sudo, true 

Rif: https://github.com/capistrano/passenger/

per aggiungere sudo accesso senza password per l'utente deployer, sul server fare:

(si potrebbe desiderare di essere più specifico per quanto riguarda i comandi consentiti)

sudo tee /etc/sudoers.d/deployer > /dev/null <<'EOF' 
deployer ALL=(ALL) NOPASSWD:ALL 
EOF 

... e nel vostro delpoy.rb, hanno:

set :user, 'deployer' # Deployment user on remote servers 

Nota: va notato che gli autori del Passeggero sono working on a method so that sudo will not be required any longer in futuro.

+0

Questo non ha aiutato. Dopo averlo aggiunto, ottengo: 'sudo: no tty presente e nessun programma askpass specificato'. Così, ho aggiunto 'default_run_options [: pty] = true', ma continua a fallire con lo stesso errore. – croceldon

+0

Non sono stato in grado di far funzionare Capistrano con le password di 'sudo'. Dovrai utilizzare sudo senza password per l'utente del deployer. Lo odio davvero, mi fa sentire un po 'male quando ci penso. Ho intenzione di lavorare su una soluzione per questo non appena la vita mi dà il tempo di affrontarlo. Aggiornerò la mia risposta con la linea di sudoers necessaria. –

+1

Va notato che noi (gli autori dei Passeggeri) stiamo lavorando su [un metodo in modo tale che sudo non sarà più richiesto] (https://github.com/phusion/passenger/issues/1392) in futuro. – Hongli

3

Se non si desidera utilizzare sudo per il riavvio del server delle applicazioni, è sufficiente aggiungere al config/deploy.rb:

namespace :deploy do 
    desc 'Restart application' 
    task :restart do 
    on roles(:app), in: :sequence, wait: 5 do 
     execute :touch, release_path.join('tmp/restart.txt') 
    end 
    end 
end 

per il riavvio con sudo (Si noti che non ha alcun effetto sui passeggeri < 5):

set :passenger_restart_with_sudo, false 

Se si desidera modificare le opzioni di riavvio, è possibile sovrascrivere questi:

set :passenger_restart_command, 'passenger-config restart-app' 
set :passenger_restart_options, -> { "#{deploy_to} --ignore-app-not-running" }