2017-07-05 44 views
0

我部署到生產如下:Capistrano的不尊重端口

HOSTS = [ 
    'api1.app.io', 
    'api2.app.io', 
    'api3.app.io', 
    'api4.app.io', 
    'api5.app.io', 
    'api6.app.io', 
    'api7.app.io', 
    'api8.app.io', 
    'api9.app.io', 
    'api10.app.io' 
].freeze 

HOSTS.each do |host| 
    server host, roles: %i[app web], user: 'deploy', port: 2323 
end 

雖然當Capistrano的嘗試ssh到服務器,因爲它仍然會嘗試使用端口22來連接失敗...

(Backtrace restricted to imported tasks) 
cap aborted! 
SSHKit::Runner::ExecuteError: Exception while executing on host api2.app.io: Net::SSH::ConnectionTimeout 

Net::SSH::ConnectionTimeout: Net::SSH::ConnectionTimeout 

Errno::ETIMEDOUT: Connection timed out - connect(2) for xx.xx.xx.xx:22 

是否有任何其他方式來配置端口?

回答

1

:port選項應該工作。如果沒有,那是一個錯誤。請打開一個錯誤報告https://github.com/capistrano/capistrano/issues

作爲一種變通方法,您還可以通過主機名使用<host>:<port>語法指定的端口,像這樣:

HOSTS.each do |host| 
    server "#{host}:#{port}", roles: %i[app web], user: 'deploy' 
end 
+0

的'#(東道國):#(港口)「'沒有工作過,最可能是因爲我使用fqdn而不是ip地址,但'ssh_options:{port:2323}'工作正常,我不會打開一個問題,因爲我使用舊版本的capistrano,而且我無法升級現在,所以它不值得 –