背景:我正在开发一个 Ruby Web 应用程序,并决定切换到 JRuby 有几个原因,我不会在这里提及。我有使用 Apache 和 Lighttpd 等服务器的经验,但我没有使用 Java 或部署基于 Java 的 Web 应用程序的经验。
就服务器软件而言,JRuby Web 应用程序的最佳设置是什么?(以及我可能需要的任何其他内容。)我有哪些服务器选择?设置基于 Java 的服务器和 Apache 之间有什么不同?换句话说,我该如何开始?
感谢您帮助新手。:)
PS:由于Java是跨平台的,我不知道这是否会有所不同,但是我的开发机器运行的是Vista,所以如果我也可以在Windows上使用相同的设置进行开发,那就太好了。
你看过这些教程吗...
我可以建议您尝试最近的 4.0 beta 版本的Passenger Phusion for Open Source 吗?它与 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 代码下载 tarball:
接下来,将以下行添加到您的 Apache 配置文件(apache.conf 或启用站点的配置文件):
显然,它也可以与 nginx 集成,但我无法确认,因为我没有尝试过。
Apache 集成确实对我很有效。请注意,这可能不是理想的企业设置。首先,它是一个测试版。其次,据我了解,这个乘客模组的非企业版不会是多线程的。这对于 JVM 应用程序的确切含义对我来说没有意义,但我还没有进行足够的研究来确定它是否真的是一个问题。另请注意,我向那些有兴趣快速进行设置的人提出此建议,特别是使用现有的 Apache 安装。
我自己一直在考虑这样做,而且我与原始海报的情况类似——拥有大量运行 LAMP 堆栈的经验,但需要迁移到 JRuby 并且完全没有 Java 经验。
我决定通过在 Apache 和 mod_proxy 后面放置一个Jetty 6实例,密切关注我当前的 Rails 应用程序的运行方式(在 Apache 和 mod_proxy_balancer 之后很薄)。
我研究了 GlassFish,虽然它很容易设置和运行,但它对我的需求来说太多了——我真正需要的 Java EE 堆栈的唯一部分是 servlet 容器。
这还没有投入生产,但我最终应该得到的是由我的发行版的 init 脚本运行的 Apache,由 capistrano 和/或 init 脚本启动的 Jetty,以及由 monit 监视的所有内容。这与我对它的当前工作方式非常相似,并且我唯一真正的“eww,Java”时刻是使用 Jetty 的 XML 配置文件。