我工作中的当前网络设置使得部署 Ruby Web 应用程序变得困难。我们在无法访问公共互联网的隔离网络中运行生产 RHEL 服务器。我的工作站显然能够通过 SSH 将软件包和文件传输到服务器,但如果没有直接的互联网访问,则几乎不可能安装 RVM 等工具。
Gem 依赖关系也很难处理。可以使用 bundler 部分解决此问题,但如果 gem 依赖于需要编译的包,它将无法工作,因为我是在 OSX 上开发(和打包)的。
我想到过两种可能的解决方案,但希望有更专业的人能给我一些建议。以下是我的想法:
- 在我的工作站的本地虚拟机上安装 Ruby 应用程序。当所有设置完成后,以某种方式获取文件系统的差异(可能是 git?),然后将其传输到生产服务器并提取。
- 设置反向 SSH 隧道以暂时在生产服务器上获取互联网访问权限(这可能吗?)。
这两个想法听起来可行吗?如果可行,你会推荐哪一个?我该如何实施它?
谢谢您的帮助!
答案1
我能想到两种对你很有帮助的工具。
fpm——这将从任意软件树构建一个 rpm。
Omnibus-这个工具就是为解决您所描述的问题而构建的,安装一个带有所有必要依赖项的 ruby 应用程序。