【问题标题】:Running a ssh tunnel from a rails/passenger server to another machine运行从 rails/passenger 服务器到另一台机器的 ssh 隧道
【发布时间】:2010-07-07 11:36:57
【问题描述】:

我有一个 Rails (2.3.8) 应用程序,每当应用程序使用“脚本/服务器”启动或使用Passenger 启动时,它都需要启动和维护一个 SSH 隧道。当脚本/服务器被 ^C'd 或乘客实例被关闭时,SSH 隧道应该被破坏。

我不希望在运行“脚本/控制台”时启动隧道 - 所以使用 config/environment.rb 看起来不是一个好选择。

因此,我不希望隧道成为后台 - 我希望它被 ruby​​ 进程附加并拥有,并且我只希望每台服务器有一个隧道。

隧道本身很可能通过直接运行 SSH 来启动,但如果有使用 SSH 库的简单方法,我将使用它。

有没有办法在 Rails 中做到这一点?我可以想到一种使用 config/environment.rb 的方法,使用一系列锁定文件和其他一些乱七八糟的东西,但我希望有某种 :on_server_start 和 :on_server_exit 钩子。

--

出于好奇,我需要这样做,因为 Rails 应用程序在位置 A 运行,并将接收来自位置 B 的一系列服务的更新。但是,位置 B 没有到位置 A 的直接路由。我将启动从应用程序到位置 B 的机器的 SSH 隧道,而位置 B 中的服务将向该机器发送更新。

【问题讨论】:

    标签: ruby-on-rails ssh passenger


    【解决方案1】:

    使用 config/environments/*.rb 和一个快速的 fork hack 设法解决了这个问题。见要点:http://gist.github.com/466267

    因此,如果您使用 RAILS_ENV=production 但不用于测试/开发,它将运行。

    【讨论】:

      猜你喜欢
      • 2014-10-02
      • 1970-01-01
      • 2014-12-13
      • 2019-03-18
      • 2011-11-25
      • 1970-01-01
      • 2022-01-22
      • 2017-12-17
      • 1970-01-01
      相关资源
      最近更新 更多