背景:我正在开发一个Ruby的Web应用程序,并决定切换到JRuby的几个原因,我不会在这里提到。 我有Apache和Lighttpd等服务器的经验,但我没有经验的Java或部署基于Java的Web应用程序。
在服务器软件方面,JRuby Web应用程序的最佳设置是什么? (还有其他什么我可能需要。)我有什么样的服务器select? build立一个基于Java的服务器和Apache之间有什么不同? 换句话说,我该如何开始?
感谢您帮助新手。 🙂
PS:我不知道它是否因为Java是跨平台而有所作为,但是我的开发机器运行Vista,所以如果我也可以在Windows上使用相同的设置进行开发,那将是非常好的。
你见过这些教程吗?
我可以提供一个build议,您可以尝试最近发布的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/
和
从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
接下来,将以下行添加到您的Apacheconfiguration文件(apache.conf或启用站点的configuration文件)中:
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集成对我来说确实很好。 请注意,这可能不是一个理想的企业设置。 首先,这是一个testing版。 其次,我的理解是这个乘客mod的非企业版本不会是multithreading的。 这恰恰相当于一个JVM应用程序对我来说没有任何意义,但是我没有足够的研究来确定它是否真的是一个问题。 另外请注意,我正在为那些有兴趣快速设置设置的人提供build议,特别是使用现有的Apache安装。
我一直在考虑自己做这件事情,而且我也和原来的海报有相似之处 – 有很多运行LAMP堆栈的经验,但是需要迁移到JRuby,而且完全没有Java经验。
我已经决定严格遵守当前Rails应用程序的运行方式(在Apache和mod_proxy_balancer之后),将一个Jetty 6实例放在Apache和mod_proxy之后。
我研究了GlassFish,虽然设置和运行起来非常简单,但对我的需求来说太多了 – 我真正需要的是Java EE堆栈的唯一部分就是servlet容器。
这还不是在生产中,但我最终应该使用的是由我的发行版的init脚本运行的Apache,由capistrano和/或init脚本启动的Jetty,以及由monit监视的所有内容。 这足够类似于目前我熟悉的东西,唯一真正的“ew,Java”时刻是与Jetty的XMLconfiguration文件一起工作。