【问题标题】:JRuby deployment options that support multiple versions of JRuby支持多个 JRuby 版本的 JRuby 部署选项
【发布时间】:2023-03-05 12:30:01
【问题描述】:

我正在寻找一种在单个服务器上部署多个 JRuby 应用程序的方法,这些应用程序处于不同的阶段,因此使用不同版本的 JRuby,从长远来看,尝试同步所有的 JRuby 应用程序会非常复杂带有所有应用服务器的应用程序,所以我正在寻找类似于 Javaland 中的 Phusion Passenger 4 的东西。

显然,Passenger 允许这样的事情,但没有可用的文档说明这样的设置应该如何工作。 Torquebox 在他们的文档中没有提到这个用例。

奖励积分:

  1. 允许git pull 部署的解决方案
  2. rvm 友好的解决方案
  3. 不基于 Tomcat 的解决方案
  4. 集群友好的解决方案
  5. 自行处理守护进程、路由、资源管理和监控的解决方案
  6. 成熟且积极支持的解决方案

到目前为止,我所看到的所有内容在某些方面都失败了,torquebox 似乎不支持多个 jruby 版本,trinidad 是 tomcat,puma 需要一些手动操作(进程监控,反向代理,... .) 等等

【问题讨论】:

    标签: rvm jruby passenger torquebox


    【解决方案1】:

    您最好的选择可能是使用 https://github.com/jruby/warbler 以“Java 方式”进行操作

    您最终会得到一个将 JRuby 的 jar 打包到存档中的 .war,因此每个应用程序都将拥有自己的 JRuby 版本。这当然需要您设置 Java 应用服务器(例如 Tomcat),部署过程通常意味着将打包的 .war 复制到服务器的部署文件夹中。

    请注意,这可能需要大量内存,因为 JRuby 使用的任何库都不会被共享(对于某些服务器,您需要确保类加载器在特定部署配置期间首先查看战争的 jar选项)

    【讨论】:

    • 这是一个值得的答案,但我不喜欢这个选项,因为它使部署复杂化 - 我经常想知道是否部署了正确的战争,这在我身上从来没有发生过“git pull并重新启动”部署机制
    • 这是非常主观的......有些人可能会说,与打包并复制相比,必须在每个部署中安装 git、jruby(带有捆绑程序)+ 执行bundle install 很复杂通过一个自包含的存档:) ...也许你只是错过了将 git commit id 放入 .war 名称,例如my_rails-1f1b25fc.war
    【解决方案2】:

    最后我选择了反向代理 + puma + 进程监控工具,但感觉这必须以某种方式更简单 - 没有三个不同的软件一起工作来实现它。

    优点是它兼容 rvm,可以通过多个 puma 进程支持多个 rubies,并允许 git pull 部署

    还有jetpack作为替代,但我没有机会玩它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-06
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 2016-05-29
      • 2023-03-18
      • 2017-06-04
      • 1970-01-01
      相关资源
      最近更新 更多