我正在按照以下方式部署到生产部门:
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
还有其他配置端口的方法吗?
答案 0 :(得分:1)
:port
选项应该有效。如果没有,那就是一个bug。请在https://github.com/capistrano/capistrano/issues打开错误报告。
作为一种变通方法,您还可以使用<host>:<port>
语法通过主机名指定端口,如下所示:
HOSTS.each do |host|
server "#{host}:#{port}", roles: %i[app web], user: 'deploy'
end