【发布时间】:2011-01-27 22:06:18
【问题描述】:
我需要通过 capistrano 将 Rails 应用程序部署到远程 Intranet 上的服务器。例如,如果我要 ssh 到目标服务器,它看起来像:
localhost$ ssh server1
server1$ ssh server2
最好的方法是什么?
提前致谢。
【问题讨论】:
我需要通过 capistrano 将 Rails 应用程序部署到远程 Intranet 上的服务器。例如,如果我要 ssh 到目标服务器,它看起来像:
localhost$ ssh server1
server1$ ssh server2
最好的方法是什么?
提前致谢。
【问题讨论】:
Capistrano 让这一切变得非常简单。只需使用
set :gateway, "user@server1:port"
在您的 config/deploy.rb 中。
【讨论】:
我建议使用:
set :ssh_options, { :forward_agent => true }
set :gateway, "user@host:port"
【讨论】:
显然,从 v3 开始的 capistrano 中删除了网关选项。相反,可以使用如下所示的跳转代理:https://github.com/capistrano/sshkit#proxying
这是它在配置文件(例如 production.rb)中的外观:
require 'net/ssh'
require 'net/ssh/proxy/jump'
set :ssh_options, {
proxy: Net::SSH::Proxy::Jump.new("user@host:port")
}
顺便说一句,您可以使用 ssh 命令的 -J 选项指定跳转代理,这样您就可以与 capistrano 分开调试连接问题。
【讨论】: