2015-03-26 5 views
6

Rails 4.1 на Ubuntu 14.04 с rbenv и ruby ​​2.2.1.Как я могу запустить приложение перезагрузки-config-app для работы?

Использование Capistrano с Capistrano пассажирами камень, но перезагрузка в конце терпит неудачу:

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. 

Когда я пытаюсь запустить эту команду в командной строке через SSH, я получаю это:

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

Что я здесь делаю неправильно?

Я использую Apache, вот соответствующие части моего /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

Я только что столкнулся с той же проблемой (Ubuntu 14.04, Apache + mod_passwnger, Rbenv, Ruby 2.0.0p594, Rails 4.1, Capistrano 3.4.0). Сейчас я выясняю это, но больше информации от вас может помочь мне устранить вашу установку. Вы используете Apache или nginx? Если вы используете Apache, можете ли вы отображать строки DocumentRoot и Passenger * из своего конфигурационного файла Apache? –

ответ

7

Вот что заставило меня бежать, я добавил это к моему conifg/deploy.rb:

set :passenger_restart_with_sudo, true 

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

Чтобы добавить беспарольный sudo доступ для deployer пользователя на сервере сделать:

(вы можете быть более конкретным, как разрешенные команды)

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

... и в вашем delpoy.rb, есть:

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

Примечания: следует отметить, что авторы Пассажира в будущем будут working on a method so that sudo will not be required any longer.

+0

Это не помогло. Добавив его, я получаю: 'sudo: нет tty настоящего и не запрашивается запрошенная программа'. Итак, я добавил 'default_run_options [: pty] = true', но он по-прежнему терпит неудачу с той же ошибкой. – croceldon

+0

Мне не удалось заставить Capistrano работать с использованием паролей 'sudo'. Вы должны будете использовать sudo без пароля для пользователя развертывателя. Я действительно ненавижу это, это заставляет меня чувствовать себя больным, когда я думаю об этом. Я намереваюсь работать над тем, чтобы исправить это, как только жизнь даст мне время, чтобы решить эту проблему. Я обновляю свой ответ с помощью строки sudoers. –

+1

Следует отметить, что мы (авторы Пассажира) работаем над [методом, так что sudo больше не потребуется] (https://github.com/phusion/passenger/issues/1392) в будущем. – Hongli

3

Если вы не хотите использовать sudo для перезагрузки сервера приложений, просто добавить в 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 

Для перезапуска с sudo (Обратите внимание, что он не оказывает никакого влияния на Пассажира < 5):

set :passenger_restart_with_sudo, false 

Если вы хотите изменить параметры перезагрузки, вы можете переопределить эти:

set :passenger_restart_command, 'passenger-config restart-app' 
set :passenger_restart_options, -> { "#{deploy_to} --ignore-app-not-running" } 
Смежные вопросы