nginx之Capistrano 3 无权查询此 Phusion Passenger 实例的状态

程序猿 阅读:23 2025-02-15 21:57:57 评论:0

尝试在 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 

这没什么区别

在这里: How can I get passenger-config restart-app to work?

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

[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 以覆盖 passenger 实例的重启方式:

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

您应该首先验证您的/etc/sudoers 配置是否允许以 root 身份无密码地执行该命令。


标签:nginx
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号