Capistrano 3 не уполномочен запрашивать статус этого экземпляра Phusion Passenger

Пытаюсь получить деплой на Capistrano 3. Я использую NGINX, RVM, Passenger, Rails 4. Мои деплои работают, но мне нужно перезапустить NGINX вручную - вот ошибка в конце деплоя:

    DEBUG [c4e821bc] Command: ~/.rvm/bin/rvm default do passenger -v
DEBUG [c4e821bc]    Phusion Passenger version 5.0.6
DEBUG [c4e821bc]    
DEBUG [c4e821bc]    "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
DEBUG [c4e821bc] Finished in 0.981 seconds with exit status 0 (successful).
 INFO [5082ae94] Running ~/.rvm/bin/rvm default do passenger-config restart-app /home/deploy/skilltry --ignore-app-not-running on 104.237.158.232
DEBUG [5082ae94] Command: ~/.rvm/bin/rvm default do passenger-config restart-app /home/deploy/skilltry --ignore-app-not-running
DEBUG [5082ae94]    *** ERROR: You are not authorized to query the status for this Phusion Passenger instance. Please try again with 'rvmsudo'.
cap aborted!

Я пробовал исправить здесь: https://github.com/capistrano/passenger/issues /2

Use visudo to edit the file (so if you mess up you have the chance to re-edit the file), at the end of the file (*) add the following:

deployuser    ALL=(root) NOPASSWD: /usr/bin/passenger-config

Это не имело значения

И здесь: Как я могу перезапустить конфигурацию пассажира -app работать?

Но я получаю приглашение, которое я не могу ввести:

[sudo] password for deploy: 

person fatfrog    schedule 13.04.2015    source источник


Ответы (3)


Глядя на файл gems/capistrano-passenger-0.0.5/lib/capistrano/tasks/passenger.cap, он содержит следующие значения по умолчанию:

  task :defaults do
    set :passenger_roles, :app
    set :passenger_restart_runner, :sequence
    set :passenger_restart_wait, 5
    set :passenger_restart_limit, 2
    set :passenger_restart_with_sudo, false
    set :passenger_environment_variables, {}
    set :passenger_restart_command, 'passenger-config restart-app'
    set :passenger_restart_options, -> { "#{deploy_to} --ignore-app-not-running" }
    set :passenger_rvm_ruby_version, ->{ fetch(:rvm_ruby_version) }
    if Rake.application.tasks.collect(&:to_s).include?("rvm:hook")
      before :'rvm:hook', :'passenger:rvm:hook'
    end
    if Rake.application.tasks.collect(&:to_s).include?("rbenv:map_bins")
      before :'rbenv:map_bins', :'passenger:rbenv:hook'
    end
  end

Я смог добавить следующее в deploy.rb, чтобы переопределить перезапуск пассажирских экземпляров:

set :passenger_restart_command, 'sudo passenger-config restart-app'

Сначала вы должны убедиться, что ваша конфигурация /etc/sudoers позволяет выполнять эту команду без пароля от имени пользователя root.

person Javeed    schedule 16.04.2015
comment
Я собираюсь попробовать ваше предложение на этих выходных, мне удалось добиться успеха с помощью set :passenger_restart_with_sudo, true и deploy ALL=(ALL) NOPASSWD:ALL - person fatfrog; 16.04.2015
comment
На самом деле, похоже, здесь Passage_restart_with_sudo может быть лучшей альтернативой :-) - person Javeed; 16.04.2015

Я также получал ошибку *** ERROR: You are not authorized to query the status for this Phusion Passenger instance. Please try again with 'sudo'., когда пытался развернуть. Я обнаружил, что с помощью драгоценного камня capistrano-passenger есть возможность исправить это:

# add this to config/deploy.rb
set :passenger_restart_with_sudo, true # default false

Вы можете прочитать документы, чтобы увидеть другие варианты.

person jeremywoertink    schedule 28.06.2017
comment
Получил ошибку: sudo: no tty present and no askpass program specified. Удаление этой строки в конфигурации недостаточно для решения проблемы. - person a.barbieri; 18.05.2019
comment
Я нашел причину проблемы, и в моем случае нет необходимости использовать sudo. Я добавил свой ответ выше. - person a.barbieri; 19.05.2019

Возможные проблемы:

  1. Конфигурация Nginx указывает на каталог, к которому у пользователя Capistrano нет доступа/разрешения.
  2. Конфигурация Nginx не прослушивает домен, который вы указали в конфигурации Capistrano.

Passenger является «менеджером процессов» и использует Nginx для управления http-трафиком в/из этих процессов.

Убедитесь, что ваш виртуальный сервер указывает на каталог, принадлежащий пользователю Capistrano, и виртуальный сервер прослушивает тот же домен, который присутствует в вашей конфигурации Capistrano.

Пример:

Предполагая, что вы выполняете развертывание на /home/my_user/my_app_path, вы должны установить my_user в качестве пользователя Capistrano для развертывания приложения.

Также предполагая, что ваш домен my_app.com, убедитесь, что он соответствует конфигурации Capistrano и Nginx.

# Capistrano configuration
server "my_app.com", user: "my_user", roles: %w{app web db}
# Nginx configuration
server {
  listen 80;
  server_name my_app.com;
  root /home/my_user/my_app_path/current/public;
  passenger_ruby /home/my_user/.rbenv/shims/ruby;
  passenger_enabled on;
  passenger_min_instances 2;
  passenger_max_requests 5000;

  rails_env production;

  #... some more config settings

}
passenger_pre_start http://my_app.com;
person a.barbieri    schedule 18.05.2019