2009-01-10 35 views
18

我有一段capistrano部署食譜我已經使用一段時間來部署我的web應用程序,然後使用sudo命令重新啓動apache/nginx。最近,當我嘗試執行這些sudo命令時,cap deploy被掛起。我看到輸出: 「[sudo]密碼爲」 與我的服務器名稱和遠程登錄,但這不是一個安全的登錄提示。帽殼只是掛着等待更多輸出,並且不允許我鍵入我的密碼來完成遠程sudo命令。Capistrano懸掛時提示SUDO密碼到Ubuntu的一個箱子

有沒有辦法解決這個或體面的工作?我不想刪除我的遠程用戶的sudo密碼提示以獲取Web重新啓動命令。

回答

32

這似乎也發生在連接到CentOS機器時。添加下面一行在你的Capistrano的部署文件:

default_run_options[:pty] = true 

另外,還要確保使用的,而不是運行中的執行sudosudo助手直接命令。例如:

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

# but 
sudo "chown root:root /etc/my.cnf" 
+13

`sudo`現在已經過時,所以不是你應該做`運行 「#{}須藤根CHOWN:根的/etc/my.cnf」' – axsuul 2012-02-21 06:24:23

+0

或者使用`invoke_command`例如`invoke_command「chown root:root /etc/my.cnf」,:via => run_method`。在哪裏run_method定義sudo(或不是,取決於你的`set:use_sudo,true/false`) – 2012-09-19 08:15:26

2

其他建議可能是不錯的,但我發現,一旦我更新到2.5.3 Capistrano的問題就走了。我必須確保停止運行O/S附帶的默認工具版本。

+0

`我必須確保我停止運行我的O/S附帶的默認版本的工具。我會停止使用那個不穩定的軟件堆棧,並開始使用您的操作系統 – hek2mgl 2013-12-12 22:00:34

2
# prevent sudo prompting for password 
set :sudo_prompt, ""