部署 JRuby 的最佳方式?

部署 JRuby 的最佳方式?

背景:我正在开发一个 Ruby Web 应用程序,并决定改用 JRuby,原因有几个,这里就不一一列举了。我有使用 Apache 和 Lighttpd 等服务器的经验,但没有使用 Java 或部署基于 Java 的 Web 应用程序的经验。

就服务器软件而言,JRuby Web 应用程序的最佳设置是什么?(以及我可能需要的其他东西。)我有哪些服务器选择?设置基于 Java 的服务器和设置 Apache 有什么不同?换句话说,我该如何开始?

谢谢您帮助新手。:)

附言:由于 Java 是跨平台的,我不知道这是否有区别,但我的开发机器运行的是 Vista,所以如果我也能在 Windows 上使用相同的设置进行开发就太好了。

答案1

答案2

我建议您尝试一下 Passenger Phusion for Open Source 的最新 4.0 测试版。它与 Apache 集成,可让您在其中一个启用的站点中安装基于 JRuby Rack 的应用程序。

http://blog.phusion.nl/2012/10/24/phusion-passenger-4-0-beta-1-is-here/

http://blog.phusion.nl/2013/01/24/phusion-passenger-4-0-beta-2-syscall-failure-simulation-framework-focus-on-stability/

从此处从 Google Code 下载 tarball:

$ curl -O http://phusion-passenger.googlecode.com/files/passenger-3.9.2.beta.tar.gz
$ 
$ JRUBY_OPTS="-Xcext.enabled=true" jruby ./bin/passenger-install-apache2-module
$ jgem install rack # Or jruby -S gem install rack

接下来,将以下行添加到您的 Apache 配置文件(apache.conf 或 sites-enabled 配置文件):

   LoadModule passenger_module /usr/local/lib/passenger-3.9.2.beta/libout/apache2/mod_passenger.so
   PassengerRoot /usr/local/lib/passenger-3.9.2.beta
   PassengerRuby /usr/java/jruby/bin/jruby
   PassengerSpawnMethod direct

显然,它也可以与 nginx 集成,但我无法确认,因为我还没有尝试过。

Apache 集成对我来说确实运行良好。请注意,这可能不是理想的企业设置。首先,这是一个测试版。其次,据我了解,此乘客模块的非企业版本将不是多线程的。对于 JVM 应用程序而言,这究竟意味着什么对我来说没有意义,但我还没有进行足够的研究来确定这是否真的是一个问题。另请注意,我向那些有兴趣快速设置某些东西的人提出此建议,特别是使用现有的 Apache 安装。

答案3

我一直在考虑自己做这件事,我的情况与原始海报类似 - 有丰富的运行 LAMP 堆栈的经验,但需要转向 JRuby 并且完全没有 Java 经验。

我决定严格遵循我当前的 Rails 应用程序的运行方式(落后于 Apache 和 mod_proxy_balancer),方法是6 号码头Apache 和 mod_proxy 后面的实例。

我研究了 GlassFish,虽然它非常容易设置和运行,但远远超出了我的需求 —— 我实际上需要的 Java EE 堆栈的唯一部分是 servlet 容器。

这还没有投入生产,但我最终应该会使用我的发行版的 init 脚本运行 Apache,使用 capistrano 和/或 init 脚本启动 Jetty,并通过 monit 监视所有内容。这与目前的工作方式非常相似,我对此很满意,我唯一真正感到“eww,Java”的时刻是使用 Jetty 的 XML 配置文件。

相关内容