18

我有一个 capistrano 部署配方,我已经使用了一段时间来部署我的 web 应用程序,然后使用 sudo 命令重新启动 apache/nginx。最近,当我尝试执行这些 sudo 命令时,cap deploy 挂起。我看到输出:“[sudo] password for” 带有我的服务器名称和远程登录,但这不是安全登录提示。cap shell 只是挂起等待更多输出,不允许我输入密码来完成远程 sudo 命令。

有没有办法解决这个问题或体面的工作?我不想删除远程用户对 web 重启命令的 sudo 密码提示。

4

3 回答 3

32

这似乎在连接到 CentOS 机器时也会发生。在 capistrano 部署文件中添加以下行:

default_run_options[:pty] = true

还要确保使用sudo帮助程序而不是sudo直接在运行命令中执行。例如:

# not
run "sudo chown root:root /etc/my.cnf"

# but
sudo "chown root:root /etc/my.cnf"
于 2009-01-11T00:32:18.023 回答
2

其他建议可能是合理的,但我发现一旦我更新到 Capistrano 2.5.3,问题就消失了。我必须确保我停止运行我的操作系统附带的默认版本的工具。

于 2009-01-14T15:18:18.530 回答
2
# prevent sudo prompting for password
set :sudo_prompt, ""
于 2011-05-19T10:31:33.087 回答