ruby – Capistrano 3 – 错误:抱歉,你必须有一个tty才能运行su
发布时间:2020-12-17 04:22:52 所属栏目:百科 来源:网络整理
导读:我刚刚将Capistrano从v2升级到v3.1. 我重写了我的任务,包括运行一个重启NGINX的shell脚本.要重新启动NGINX,我必须以sudo身份运行,这会导致错误: Sorry,you must have a TTY to run sudo 在Capistrano 2中,要解决此问题,我添加到我的Capfile中: default_run
我刚刚将Capistrano从v2升级到v3.1.
我重写了我的任务,包括运行一个重启NGINX的shell脚本.要重新启动NGINX,我必须以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),wait: 1 do execute :sudo,"./restart.sh" end end end 要在不提示输入密码的情况下进行连接,您需要设置SSH密钥.我的production.rb和staging.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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |