0

我正在尝试使用该命令重新启动独角兽,RUBBER_ENV=staging FILTER=staging cap rubber:unicorn:restart但出现以下错误:

triggering load callbacks
* 2013-10-21 11:49:47 executing `rubber:init'
** Auto role: app => staging.x.com, {:platform=>"linux"}
** Auto role: unicorn => staging.x.com, {:platform=>"linux"}
** Auto role: nginx => staging.x.com, {:platform=>"linux"}
** Auto role: collectd => staging.x.com, {:platform=>"linux"}
** Auto role: common => staging.x.com, {:platform=>"linux"}
** Auto role: monit => staging.x.com, {:platform=>"linux"}
** Auto role: db => staging.x.com, {:primary=>true, :platform=>"linux"}
** Auto role: postgresql => staging.x.com, {:platform=>"linux"}
** Auto role: postgresql_master => staging.x.com, {:platform=>"linux"}
** Auto role: examples => staging.x.com, {:platform=>"linux"}
** Auto role: graphite_server => staging.x.com, {:platform=>"linux"}
** Auto role: graphite_web => staging.x.com, {:platform=>"linux"}
** Auto role: memcached => staging.x.com, {:platform=>"linux"}
** Auto role: web => staging.x.com, {:platform=>"linux"}
** Auto role: web_tools => staging.x.com, {:platform=>"linux"}
 * 2013-10-21 11:49:50 executing `rubber:unicorn:restart'
 * 2013-10-21 11:49:50 executing `rubber:unicorn:stop'
 * executing "sudo -p 'sudo password: '  bash -l -c 'if [ -f /var/run/unicorn.pid ]; then pid=`cat /var/run/unicorn.pid` && kill -TERM $pid; fi'"
servers: ["staging.voylla.com"]
connection failed for: staging.x.com (Net::SSH::AuthenticationFailed: root)

一些研究提出了一些问题,但即使在我的以下设置后我也收到了错误deploy.rb

set :ssh_options, {:auth_methods => "publickey"}
set :ssh_options, {:keys => ["~/voylla.pem"]}

我什至尝试了这里提到的解决方案。但这也不起作用。

有人可以帮忙吗。谢谢

4

2 回答 2

0

将 .pem 文件添加到文件~/.ssh夹,然后ssh-add对 .pem 文件执行

于 2013-10-21T13:30:35.637 回答
0

无论** Auto role: web_tools => staging.x.com, {:platform=>"linux"}做什么,它都不是 Capistrano 的一部分。

问题是sudo无法在没有密码的情况下更改为您的超级用户帐户,因此系统会提示您。在 Capistrano 2.x 中,您可以看到提示,但无法回答它(即,由于输入处理的工作方式很奇怪,您键入的任何内容都无法发送到任何地方)

我建议的解决方法是确保您的部署用户可以sudo在不需要密码的情况下调用,或者更改您的脚本,以便setuid您可以调用一个封装此逻辑的脚本。

于 2013-10-21T07:10:46.317 回答