卡皮斯特拉诺不尊重港口



我正在部署到生产环境,如下所示:

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

还有其他方法可以配置端口吗?

:port选项应该有效。如果没有,则说明这是一个错误。请在 https://github.com/capistrano/capistrano/issues 打开错误报告。

作为解决方法,您还可以使用<host>:<port>语法通过主机名指定端口,如下所示:

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

最新更新