gpt4 book ai didi

ruby - Capistrano 3 - 错误 : sorry, 你必须有一个 tty 才能运行 sudo

转载 作者:数据小太阳 更新时间:2023-10-29 06:57:27 25 4
gpt4 key购买 nike

我刚刚将 Capistrano 从 v2 升级到 v3.1。

我重写了我的任务,其中包括一个运行 shell 脚本的任务,该脚本会重新启动 NGINX 等。要重新启动 NGINX,我必须以 sudo 身份运行,这会导致错误:

Sorry, you must have a TTY to run sudo

在 Capistrano 2 中,为了解决这个问题,我在我的 Capfile 中添加了:

default_run_options[:pty] = true

Capistrano v3 的等价物是什么?

我的 deploy.rb 文件如下所示:

# config valid only for Capistrano 3.1
lock '3.1.0'

set :application, 'APP_NAME'

namespace :deploy do

desc 'Restart NGINX'
task :restart do

on roles(:app), in: :sequence, wait: 5 do
execute :sudo, "./restart.sh"
end
end

end

最佳答案

要解决此问题,我需要将 set :pty, true 添加到我的 deploy.rb 文件中。我不得不四处寻找这个答案,所以我想我会分享,以防其他人遇到同样的问题。

更新了 deploy.rb 文件

# config valid only for Capistrano 3.1
lock '3.1.0'

set :application, 'APP_NAME'
set :pty, true

namespace :deploy do

desc 'Restart NGINX'
task :restart do
on roles(:app), in: :sequence, wait: 1 do
execute :sudo, "./restart.sh"
end
end

end

要在不提示输入密码的情况下进行连接,您需要设置 SSH key 。我的 production.rbstaging.rb 看起来像这样:

set :stage, :production

role :app, %{ec2-000-000-000-000.eu-west-1.compute.amazonaws.com}

set :ssh_options, {
user: 'ubuntu',
keys: %w(/path/to/key/file/my_access_key.pem),
forward_agent: false
}

关于ruby - Capistrano 3 - 错误 : sorry, 你必须有一个 tty 才能运行 sudo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21331495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com