2009-07-06 15 views
8

¿Alguien tiene instrucciones claras para configurar jRuby para que funcione con IIS.Instrucciones para configurar IIS y jRuby

Editar:

Lo que estoy buscando es instrucciones paso a paso para conseguir una aplicación Ruby on Rails trabaja en Windows usando IIS y jruby. La razón es porque no puedo encontrar nada más que "usar Linux" cuando hago la pregunta en libertad. Para la mayoría de las personas, Windows es el entorno principal de desarrollo e implementación, por lo que no se puede usar un servidor basado en Linux. Además, IIS se incluye con Windows y proporciona una integración superior con Active Directory, por lo que usar Apache también está fuera de cuestión.

Lo último que está usando war files es una pesadilla, por favor incluye instrucciones sobre cómo implementar aplicaciones de rieles simplemente copiando los archivos o cualquier otra cosa que no sea usar war files.

+0

Creo que va por el camino equivocado al tratar de evitar los archivos de guerra. A la larga, será mucho más fácil si tomas algo de tiempo para aprender sobre los archivos war en vez de tratar de sortearlos. –

+0

He actualizado sustancialmente mi respuesta para mostrar un tutorial paso a paso para JRuby e IIS sin NINGUNA GUERRA :-) –

+0

He actualizado el tutorial para mostrar la creación de guerra usando Warbler, y ejecutando aplicaciones JRuby/Rails en Glassfish a través de IIS. Disfruta :-) –

Respuesta

10

¿Es realmente solo una aplicación de Rails la que desea implementar en IIS, o debe ser JRuby? Si solo es Ruby on Rails en lugar de JRuby, entonces here is your step-by-step guide. Pero si es JRuby y quieres trabajar con IIS, no busques más. Debajo están los pasos que seguí; mi entorno es IIS7 en Windows 7 RC, Java 1.6.0_13.

  1. Primero, descargué JRuby de http://dist.codehaus.org/jruby/1.3.1/jruby-bin-1.3.1.tar.gz.
  2. Luego extraje el archivo en C:\JRuby.
  3. Establecí la variable de entorno JRUBY_HOME en c:\JRuby\jruby-1.3.1.
  4. He añadido %JRUBY_HOME%\bin a la ruta.

Voy a caminar a través de los próximos pasos con capturas de pantalla intercaladas.jruby plazo

Vamos a confirmar que se ha instalado correctamente:

 
C:\Users\Vinay>jruby -v 
jruby 1.3.1 (ruby 1.8.6p287) (2009-06-15 2fd6c3d) (Java HotSpot(TM) Client VM 1. 
6.0_13) [x86-java] 

bien hasta ahora. Vamos a usar JRuby para instalar rieles:

 
C:\Users\Vinay>gem install json-jruby 
C:\Users\Vinay>gem install rails --no-rdoc 
JRuby limited openssl loaded. gem install jruby-openssl for full support. 
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL 
Successfully installed activerecord-2.3.3 
Successfully installed rack-1.0.0 
Successfully installed actionpack-2.3.3 
Successfully installed actionmailer-2.3.3 
Successfully installed activeresource-2.3.3 
Successfully installed rails-2.3.3 
6 gems installed 
Installing ri documentation for activerecord-2.3.3... 
Installing ri documentation for rack-1.0.0... 
Installing ri documentation for actionpack-2.3.3... 
Installing ri documentation for actionmailer-2.3.3... 
Installing ri documentation for activeresource-2.3.3... 
Installing ri documentation for rails-2.3.3... 

Vamos a crear una aplicación Rails llamado jror:

 
C:\Users\Vinay\Projects>rails new jror 
     create 
     create app/controllers 
     create app/helpers 
     create app/models 
     create app/views/layouts 
     create config/environments 
     create config/initializers 
     create config/locales 
     create db 
     create doc 
     create lib 
     create lib/tasks 
     create log 
     create public/images 
     create public/javascripts 
     create public/stylesheets 
     create script/performance 
     create test/fixtures 
     create test/functional 
     create test/integration 
     create test/performance 
     create test/unit 
     create vendor 
     create vendor/plugins 
     create tmp/sessions 
     create tmp/sockets 
     create tmp/cache 
     create tmp/pids 
     create Rakefile 
     create README 
     create app/controllers/application_controller.rb 
     create app/helpers/application_helper.rb 
     create config/database.yml 
     create config/routes.rb 
     create config/locales/en.yml 
     create config/initializers/backtrace_silencers.rb 
     create config/initializers/inflections.rb 
     create config/initializers/mime_types.rb 
     create config/initializers/new_rails_defaults.rb 
     create config/initializers/session_store.rb 
     create config/environment.rb 
     create config/boot.rb 
     create config/environments/production.rb 
     create config/environments/development.rb 
     create config/environments/test.rb 
     create script/about 
     create script/console 
     create script/dbconsole 
     create script/destroy 
     create script/generate 
     create script/runner 
     create script/server 
     create script/plugin 
     create script/performance/benchmarker 
     create script/performance/profiler 
     create test/test_helper.rb 
     create test/performance/browsing_test.rb 
     create public/404.html 
     create public/422.html 
     create public/500.html 
     create public/index.html 
     create public/favicon.ico 
     create public/robots.txt 
     create public/images/rails.png 
     create public/javascripts/prototype.js 
     create public/javascripts/effects.js 
     create public/javascripts/dragdrop.js 
     create public/javascripts/controls.js 
     create public/javascripts/application.js 
     create doc/README_FOR_APP 
     create log/server.log 
     create log/production.log 
     create log/development.log 
     create log/test.log 

Vamos a correr WEBrick para hacer trabajo seguro de que todo está como se esperaba:

 
C:\Users\Vinay\Projects\jror>jruby script/server 
=> Booting WEBrick 
=> Rails 2.3.3 application starting on http://0.0.0.0:3000 
JRuby limited openssl loaded. gem install jruby-openssl for full support. 
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
[2009-07-21 17:51:21] INFO WEBrick 1.3.1 
[2009-07-21 17:51:21] INFO ruby 1.8.6 (2009-06-15) [java] 
[2009-07-21 17:51:21] INFO WEBrick::HTTPServer#start: pid=2440 port=3000 

Vaya a http://localhost:3000/ y confirme que aparece su aplicación Rails.

Rails app on WEBrick

Efectivamente, ahí está.

Lo siguiente es configurar un mecanismo mediante el cual las solicitudes seleccionadas realizadas a IIS se transmiten a JRuby. Para hacer esto, se necesita un reescritor de URL/proxy inverso. Usé ISAPI Rewrite 3 para esto. Puede optar por usar una herramienta diferente (por ejemplo, Microsoft ISA). ISAPI Rewrite 3 tiene un buen valor de $ 99 por servidor y viene con un período de prueba de 45 días.

Para reescritura de ISAPI 3, que creó el archivo de configuración httpd.conf de la siguiente manera:

 
RewriteEngine on 
RewriteBase/
RewriteLog "C:\temp\rewrite.log" 
RewriteLogLevel 9 
RewriteProxy jror/(.*) http://localhost:3000/$1 

Este proxies URLs de tipo

http://localhost/jror/abc123 

a

http://localhost:3000/abc123 

Así que ahora, podemos navegar hasta http://localhost/jror/ y ver la solicitud servida por JRuby pero a través de IIS:

Rails app on WEBrick through IIS

Y adivina qué: no hay guerras ! Cualquier cambio en su aplicación de Rails debe realizarse directamente.

Aquí hay una captura de pantalla de mi consola de Firebug que muestra las cabeceras de respuesta para esa página:

alt text

Por supuesto, esto es más de una configuración de desarrollo de una producción - pero para el uso de producción es probable que necesite usar un servidor de aplicaciones preparado para la producción como Glassfish, que implicará el uso de esas molestas guerras ;-)

Si y cuando desea implementar en un servidor de aplicaciones Java usando wars, puede usar Warbler para un fácil empaquetado de su aplicación en una guerra.

Para ejecutar en Glassfish V3, se requieren algunos pasos adicionales. La forma más rápida de implementar y ejecutar sus aplicaciones de Rails es usar la gema GlassFish, que consiste únicamente en el kernel GlassFish v3 (Grizzly) y algunas utilidades, por lo que ofrece una configuración de inflado mínimo.Vamos a instalar la gema:

 
C:\Users\Vinay\Projects\jror>gem install glassfish 
JRuby limited openssl loaded. gem install jruby-openssl for full support. 
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL 
Successfully installed glassfish-0.9.5-universal-java 
1 gem installed 
Installing ri documentation for glassfish-0.9.5-universal-java... 
Installing RDoc documentation for glassfish-0.9.5-universal-java... 

ejecutar la aplicación Rails en GlassFish:

 
C:\Users\Vinay\Projects>glassfish jror 
Starting GlassFish server at: 192.168.0.17:3000 in development environment... 
Writing log messages to: jror/log/development.log. 
Press Ctrl+C to stop. 

Como se puede ver, se está ejecutando en Glassfish, pero aún no se requieren las guerras! No se necesitan cambios en el lado de IIS, excepto (en el httpd.conf en mi configuración) cambiar el proxy para que apunte a la dirección IP y al puerto utilizado por el servidor de Glassfish. Si quieres ir al grano, instalar el servidor completo de Glassfish y ejecutar las aplicaciones de Rails en él, también puedes seguir these instructions del equipo de Glassfish. Cubren la instalación y ejecución de Glassfish, el servidor, la implementación y la desinstalación de aplicaciones de Rails y la ejecución de aplicaciones en modo de producción.

Esto es lo que necesita para crear archivos de guerra para el servidor completo de Glassfish.

Instalar la curruca:

 
C:\Users\Vinay\Projects>gem install warbler 
JRuby limited openssl loaded. gem install jruby-openssl for full support. 
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL 
Successfully installed warbler-0.9.13 
1 gem installed 
Installing ri documentation for warbler-0.9.13... 
Installing RDoc documentation for warbler-0.9.13... 

Ejecutar la curruca:

 
C:\Users\Vinay\Projects\jror>warble 
mkdir -p tmp/war/WEB-INF/gems/specifications 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/rails-2.3.3.gemspec tm 
/war/WEB-INF/gems/specifications/rails-2.3.3.gemspec 
mkdir -p tmp/war/WEB-INF/gems/gems 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/rake-0.8.7.gemspec tmp 
war/WEB-INF/gems/specifications/rake-0.8.7.gemspec 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/activesupport-2.3.3.ge 
spec tmp/war/WEB-INF/gems/specifications/activesupport-2.3.3.gemspec 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/activerecord-2.3.3.gem 
pec tmp/war/WEB-INF/gems/specifications/activerecord-2.3.3.gemspec 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/actionpack-2.3.3.gemsp 
c tmp/war/WEB-INF/gems/specifications/actionpack-2.3.3.gemspec 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/rack-1.0.0.gemspec tmp 
war/WEB-INF/gems/specifications/rack-1.0.0.gemspec 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/actionmailer-2.3.3.gem 
pec tmp/war/WEB-INF/gems/specifications/actionmailer-2.3.3.gemspec 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/specifications/activeresource-2.3.3.g 
mspec tmp/war/WEB-INF/gems/specifications/activeresource-2.3.3.gemspec 
mkdir -p tmp/war/WEB-INF/app 
mkdir -p tmp/war/WEB-INF/config 
mkdir -p tmp/war/WEB-INF/lib 
mkdir -p tmp/war/WEB-INF/log 
mkdir -p tmp/war/WEB-INF/vendor 
mkdir -p tmp/war/WEB-INF/tmp 
mkdir -p tmp/war/WEB-INF/app/controllers 
mkdir -p tmp/war/WEB-INF/app/helpers 
mkdir -p tmp/war/WEB-INF/app/models 
mkdir -p tmp/war/WEB-INF/app/views 
cp app/controllers/application_controller.rb tmp/war/WEB-INF/app/controllers/ap 
lication_controller.rb 
cp app/helpers/application_helper.rb tmp/war/WEB-INF/app/helpers/application_he 
per.rb 
mkdir -p tmp/war/WEB-INF/app/views/layouts 
cp config/boot.rb tmp/war/WEB-INF/config/boot.rb 
cp config/database.yml tmp/war/WEB-INF/config/database.yml 
cp config/environment.rb tmp/war/WEB-INF/config/environment.rb 
mkdir -p tmp/war/WEB-INF/config/environments 
mkdir -p tmp/war/WEB-INF/config/initializers 
mkdir -p tmp/war/WEB-INF/config/locales 
cp config/routes.rb tmp/war/WEB-INF/config/routes.rb 
cp config/environments/development.rb tmp/war/WEB-INF/config/environments/devel 
pment.rb 
cp config/environments/production.rb tmp/war/WEB-INF/config/environments/produc 
ion.rb 
cp config/environments/test.rb tmp/war/WEB-INF/config/environments/test.rb 
cp config/initializers/backtrace_silencers.rb tmp/war/WEB-INF/config/initialize 
s/backtrace_silencers.rb 
cp config/initializers/inflections.rb tmp/war/WEB-INF/config/initializers/infle 
tions.rb 
cp config/initializers/mime_types.rb tmp/war/WEB-INF/config/initializers/mime_t 
pes.rb 
cp config/initializers/new_rails_defaults.rb tmp/war/WEB-INF/config/initializer 
/new_rails_defaults.rb 
cp config/initializers/session_store.rb tmp/war/WEB-INF/config/initializers/ses 
ion_store.rb 
cp config/locales/en.yml tmp/war/WEB-INF/config/locales/en.yml 
mkdir -p tmp/war/WEB-INF/lib/tasks 
mkdir -p tmp/war/WEB-INF/vendor/plugins 
mkdir -p tmp/war/WEB-INF/tmp/cache 
mkdir -p tmp/war/WEB-INF/tmp/pids 
mkdir -p tmp/war/WEB-INF/tmp/sessions 
mkdir -p tmp/war/WEB-INF/tmp/sockets 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-complet 
-1.3.0RC1.jar tmp/war/WEB-INF/lib/jruby-complete-1.3.0RC1.jar 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-complet 
-1.3.0RC1.jar tmp/war/WEB-INF/lib/jruby-complete-1.3.0RC1.jar 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-rack-0. 
.4.jar tmp/war/WEB-INF/lib/jruby-rack-0.9.4.jar 
cp C:/JRuby/jruby-1.3.1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-rack-0. 
.4.jar tmp/war/WEB-INF/lib/jruby-rack-0.9.4.jar 
cp public/404.html tmp/war/404.html 
cp public/422.html tmp/war/422.html 
cp public/500.html tmp/war/500.html 
cp public/favicon.ico tmp/war/favicon.ico 
mkdir -p tmp/war/images 
cp public/index.html tmp/war/index.html 
mkdir -p tmp/war/javascripts 
cp public/robots.txt tmp/war/robots.txt 
mkdir -p tmp/war/stylesheets 
cp public/images/rails.png tmp/war/images/rails.png 
cp public/javascripts/application.js tmp/war/javascripts/application.js 
cp public/javascripts/controls.js tmp/war/javascripts/controls.js 
cp public/javascripts/dragdrop.js tmp/war/javascripts/dragdrop.js 
cp public/javascripts/effects.js tmp/war/javascripts/effects.js 
cp public/javascripts/prototype.js tmp/war/javascripts/prototype.js 
mkdir -p tmp/war/WEB-INF 
jar cf jror.war -C tmp/war . 

C:\Users\Vinay\Projects\jror>dir jror.war 
Volume in drive C has no label. 
Volume Serial Number is 0C8D-1418 

Directory of C:\Users\Vinay\Projects\jror 

22/07/2009 15:55  13,180,634 jror.war 
       1 File(s)  13,180,634 bytes 
       0 Dir(s) 7,730,462,720 bytes free 

Uf!

+0

ok. Me olvidaré del asunto del archivo de guerra. si publicas instrucciones para conectarte jruby a iis usando glassfish, aceptaré tu respuesta y te daré la recompensa. lo siento, siento tanto dolor por esto, pero quiero un lugar para que las personas encuentren estas instrucciones en un solo lugar. – rip747

+0

¿Soy yo el que piensa que esta respuesta demuestra que el sistema de recompensas de SO realmente funciona? Imagine cuánto tendría que pagarle a alguien para obtener este nivel de información. – DanSingerman

+0

En realidad, Dan, resulta que tuve que hacer una configuración similar (aunque no con Glassfish) para otro proyecto. Es cierto que he puesto un poco de esfuerzo en esta respuesta, pero también es para mi futura referencia. He encontrado fácilmente este nivel de información en los blogs de las personas donde no hay recompensas involucradas, y no hay duda de que la bonificación es agradable. Pero no vale la pena pasar el tiempo * solo * por la recompensa. –

5

Primero necesita instalar Tomcat. Consulte esto how-to para configurar Tomcat junto con IIS.

Con JRuby creará archivos WAR. Solo colóquelos en la carpeta webapps de Tomcat y estará listo para comenzar.

Actualización: Bien, debe integrar dos tecnologías que no estaban destinadas a usarse juntas: IIS y JRuby. Lo bueno es que JRuby es Java y Ruby y puedes usar lo mejor de ambos mundos. Ruby es más productivo y divertido de programar, pero Java es mejor para la implementación (especialmente cuando es necesario hacerlo con IIS). Entonces mi consejo todavía se sostiene. Cree un archivo war, instale Tomcat e implemente el archivo war allí. Implementar el archivo war es tan fácil como copiarlo en la carpeta webapps. Estos son los pasos que debe seguir:

  • Instalar Tomcat
  • Integrar Tomcat con IIS utilizando el plug-in de ISAPI (puedo ayudar si necesita más información sobre esto)
  • Crear un archivo WAR (NetBeans IDE puede hacer eso por usted)
  • Copia el archivo WAR a la carpeta webapps de Tomcat

Si aún no desea utilizar los archivos WAR tienen un vistazo a este blog spot. Describe cómo puede ejecutar RoR con IIS. Creo que para JRuby el procedimiento sería el mismo. De todos modos, un enfoque CGI es la única manera si desea evitar los archivos WAR.

+0

Sí, lo importante es apuntar que jRuby compila el código de bytes de Java. Así que, a menos que esté equivocado, todo lo que necesita es un contenedor de servlets de Java con los archivos jRuby war apropiados. –

+0

Los archivos WAR para la implementación de JRuby son los que http://rubyonrails.org/deploy recomienda – kgiannakakis