gpt4 book ai didi

ruby-on-rails - 是否可以让 Capistrano 通过反向 SSH 隧道进行结帐?

转载 作者:行者123 更新时间:2023-12-04 04:21:19 24 4
gpt4 key购买 nike

我正在开发一个驻留在公共(public)主机上的应用程序,但我必须将其源代码保存在公司防火墙后面的 Git 存储库中。我已经厌倦了通过 scp 进行部署的缓慢过程(复制整个存储库并在每次部署时通过 SSH 传送)并且希望远程主机只需执行 git pull更新。问题是防火墙禁止传入的 SSH 连接。

我是否可以设置从我的计算机到部署计算机的 SSH 隧道,并使用我的存储库作为 git pull 的源? ?毕竟,git是分布式的,因此我的副本与中央存储库一样有效。如果这是可能的,隧道命令和 Capistrano 配置是什么?

我认为隧道看起来像

ssh -R something:deployserver.com:something deploybot@deployserver.com

最佳答案

网络::SSH implements remote forwarding .我查看了 Capistrano 的所有源代码,在当前版本中看不到任何对它的引用。尽管如此,这不会阻止您在使用 Capistrano 部署之前建立远程转发。

您要做的是设置 :local_repository:repository单独的路径。 :local_repository在本地引用以确定在启动连接之前将用于部署的提交。剩下 :repository用于在连接启动后从远程服务器中提取。您可以在此处指定防火墙后面的存储库的路径。

# deploy.rb
set :local_repository, "ssh://git@serverbehindfirewall/path/to/project.git"
set :repository, "ssh://git@localhost:9000/path/to/project.git"

在部署之前,请务必建立远程转发。您需要为部署到的每台服务器重复此操作。
$ ssh -R 9000:serverbehindfirewall:22 deploybot@deployserver.com
# CTRL + C + A (Screen) or ⌘ + T (Terminal.app) to open new tab
$ cap HOSTFILTER=deployserver.com deploy # HOSTFILTER reduces set to specified host. Only useful if you have multiple servers.

使用 Net::SSH,这可以很容易地变成一个任务,在部署到多个服务器时提供更大的灵 active 。

最后,鉴于您一直在使用 scp,您可能需要设置 deploy_via, :remote_cache它将存储库的副本保存在远程服务器上。这大大减少了您的部署时间,减少了损坏的机会。

关于ruby-on-rails - 是否可以让 Capistrano 通过反向 SSH 隧道进行结帐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2729100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com