2015-03-26 11 views
6

Rails 4.1 na Ubuntu 14.04 z rbenv i rubinem 2.2.1.W jaki sposób mogę uruchomić aplikację restartującą dla pasażerów-config?

Korzystanie Capistrano z gem capistrano-osobowego, ale restart na końcu zawiedzie:

INFO [8213c63a] Running /usr/bin/env passenger-config restart-app /home/deployer/my_app --ignore-app-not-running as [email protected]e.com 
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. 

Kiedy próbuję uruchomić to polecenie w wierszu poleceń poprzez SSH, mam to:

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

Co ja tu robię źle?

Używam Apache, tutaj jest odpowiednie części mojego /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

Właśnie napotkałem ten sam problem (Ubuntu 14.04, Apache + mod_passwnger, Rbenv, Ruby 2.0.0p594, Rails 4.1, Capistrano 3.4.0). W tej chwili szukam go, ale więcej informacji od Ciebie może mi pomóc w rozwiązaniu problemów z konfiguracją. Czy używasz Apache lub nginx? Jeśli używasz Apache, czy możesz pokazać linie DocumentRoot i Passenger * ze swojej konfiguracji Apache? –

Odpowiedz

7

oto co dostałem mnie działa, dodałem to do mojego conifg/deploy.rb:

set :passenger_restart_with_sudo, true 

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

Aby dodać hasłem mniej sudo dostępu dla użytkownika deployer na serwerze zrobić:

(może chcesz być bardziej szczegółowe, dozwolonych poleceń)

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

... iw swoim delpoy.rb mają:

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

Uwaga: należy zauważyć, że autorzy Pasażerów są w przyszłości working on a method so that sudo will not be required any longer.

+0

To nie pomogło. Po dodaniu otrzymuję: 'sudo: no tty present i bez określonego programu askpass'. Więc dodałem 'default_run_options [: pty] = true', ale nadal nie działa z tym samym błędem. – croceldon

+0

Nie byłem w stanie zmusić Capistrano do pracy z użyciem haseł 'sudo'. Będziesz musiał użyć sudo bez uprawnień dla użytkownika wdrażającego. Naprawdę nienawidzę tego, sprawia, że ​​czuję się trochę chory, kiedy o tym myślę. Zamierzam pracować nad rozwiązaniem tego problemu, gdy tylko życie da mi czas na rozwiązanie tego problemu. Zaktualizuję moją odpowiedź, używając potrzebnej linii sudoers. –

+1

Należy zauważyć, że my (autorzy Pasażerów) pracujemy nad [metodą, dzięki której sudo nie będzie już dłużej potrzebny] (https://github.com/phusion/passenger/issues/1392) w przyszłości. – Hongli

3

Jeśli nie chcesz używać sudo do ponownego uruchomienia serwera aplikacji, wystarczy dodać do 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 

Dla ponownym ze sudo (Zauważ, że nie ma żadnego wpływu na Pasażera < 5):

set :passenger_restart_with_sudo, false 

Jeśli chcesz zmienić opcje ponownym uruchomieniu, można zastąpić je:

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