Nginx Capistrano 3无权查询此Phusion乘客实例的状态

Nginx Capistrano 3无权查询此Phusion乘客实例的状态,nginx,passenger,capistrano3,Nginx,Passenger,Capistrano3,正在尝试在Capistrano 3上部署。我用的是NGINX,RVM,乘客,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] "Phu

正在尝试在Capistrano 3上部署。我用的是NGINX,RVM,乘客,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!
我在这里尝试了一个解决方案:

这没什么区别

在这里:

但我得到一个提示,我无法输入:

[sudo] password for deploy: 

查看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用户身份执行该命令的无密码操作。

我收到
***错误:您无权查询此实例的状态。请使用“sudo”重试。
我尝试部署时也出现错误。我发现使用capistrano乘客宝石,有一个选项可以修复此问题:

# add this to config/deploy.rb
set :passenger_restart_with_sudo, true # default false
您可以阅读上的以查看其他选项。

可能的问题:
  • Nginx配置指向Capistrano用户没有访问/权限的目录
  • Nginx配置未侦听您在Capistrano配置中设置的域
  • Passenger是一个“流程管理器”,使用Nginx管理这些流程之间的http流量

    确保虚拟服务器指向Capistrano用户拥有的目录,并且虚拟服务器正在侦听Capistrano配置中的同一域

    例如: 假设要部署到
    /home/my\u user/my\u app\u path
    ,则应将
    my\u user
    设置为Capistrano user以部署应用程序

    另外,假设您的域是my_app.com,请确保Capistrano和Nginx配置中的域是一致的

    #Capistrano配置
    服务器“my_app.com”,用户:“my_user”,角色:%w{app web db}
    

    我打算在这个周末尝试一下你的建议,我能够让set顺利运行:passer\u restart\u with_sudo,true and deploy ALL=(ALL)NOPASSWD:alla实际上,看起来passer\u restart\u with_sudo可能是更好的选择:-)出现错误:
    sudo:no tty present和no askpass程序specified
    。将这一行放到配置中不足以解决问题。我找到了导致问题的原因,在我的情况下,没有必要使用
    sudo
    。我在上面加了我的答案。
    # add this to config/deploy.rb
    set :passenger_restart_with_sudo, true # default false
    
    # 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;