Ruby on rails 如何让乘客配置重启应用程序工作?

Ruby on rails 如何让乘客配置重启应用程序工作?,ruby-on-rails,capistrano,passenger,capistrano3,Ruby On Rails,Capistrano,Passenger,Capistrano3,Ubuntu14.04上的Rails 4.1,带有rbenv和ruby 2.2.1 将capistrano与capistrano乘客gem一起使用,但最后的重启失败: INFO [8213c63a] Running /usr/bin/env passenger-config restart-app /home/deployer/my_app --ignore-app-not-running as deployer@mysite.com DEBUG [8213c63a] Command: pass

Ubuntu14.04上的Rails 4.1,带有rbenv和ruby 2.2.1

将capistrano与capistrano乘客gem一起使用,但最后的重启失败:

INFO [8213c63a] Running /usr/bin/env passenger-config restart-app /home/deployer/my_app --ignore-app-not-running as deployer@mysite.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.
当我尝试通过SSH在命令行上运行此命令时,我得到以下结果:

    deployer@host:~/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>
LoadModule passenger\u module/home/deployer/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.5/buildout/apache2/mod\u passenger.so
passengeroot/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
ServerName mysite.name.com
# !!! 确保将DocumentRoot指向“public”!
DocumentRoot/home/deployer/mysite/current/public
#这放松了Apache的安全设置。
允许超越所有
#必须关闭“多视图”。
选项-多视图
#如果您使用的是Apache>=2.4,请取消对此的注释:
要求所有授权

这是我运行的原因,我将它添加到了我的
conifg/deploy.rb

set :passenger_restart_with_sudo, true
参考:

要为
deployer
用户添加无密码
sudo
访问权限,请在服务器上执行以下操作:

(您可能希望更具体地说明允许的命令)


注意:应该注意,乘客作者是未来的。

如果您不想使用
sudo
重新启动应用程序服务器,只需添加到
config/deploy.rb

set :passenger_restart_with_sudo, true
namespace:deploydo
描述“重新启动应用程序”
任务:重新启动do
在角色(:app)上,在::序列中,等待:5 do
执行:触摸,释放路径连接('tmp/restart.txt')
结束
结束
结束
对于使用
sudo
重新启动(请注意,这对<5号乘客没有任何影响):

如果要更改重新启动选项,可以覆盖以下选项:

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

我刚刚遇到了同样的问题(Ubuntu 14.04、Apache+mod_passwnger、Rbenv、Ruby 2.0.0p594、Rails 4.1、Capistrano 3.4.0)。我现在正在想办法,但是您提供的更多信息可能会帮助我解决您的设置问题。您使用的是Apache还是nginx?如果您使用的是Apache,能否从Apache配置中显示DocumentRoot和Passenger*行?这没有帮助。添加它之后,我得到:
sudo:no tty present和no askpass program specified
。因此,我添加了
default\u run\u options[:pty]=true
,但仍然失败,出现了相同的错误。我无法让Capistrano使用
sudo
密码。您必须为部署器用户使用无密码sudo。我真的有点讨厌它,一想到它我就觉得有点恶心。一旦生活给我时间来解决这个问题,我打算尽快解决它。我将使用所需的sudoers行更新我的答案。应该注意的是,我们(乘客作者)正在未来进行研究。乘客5.0.10现在使用乘客配置重新启动sudo less。设置:乘客_重启_,_sudo为false应能工作。
set :passenger_restart_with_sudo, false
set :passenger_restart_command, 'passenger-config restart-app'
set :passenger_restart_options, -> { "#{deploy_to} --ignore-app-not-running" }