Instrucciones para configurar IIS y jRuby
-
23-08-2019 - |
Pregunta
¿Alguien tiene instrucciones claras para configurar jRuby para que funcione con IIS?
Editar:
Lo que estoy buscando son instrucciones paso a paso para hacer que una aplicación Ruby on Rails funcione en Windows usando IIS y jRuby.La razón es que no puedo encontrar nada más que "usar Linux" cuando hago la pregunta en la naturaleza.Para la mayoría de las personas, Windows es el principal entorno de desarrollo e implementación, por lo que utilizar un servidor basado en Linux está fuera de discusión.Además, IIS se incluye con Windows y proporciona una integración superior con Active Directory, por lo que el uso de Apache también está fuera de discusión.
Lo último es que usar archivos war es una pesadilla; incluya instrucciones sobre cómo implementar aplicaciones Rails simplemente copiando los archivos o cualquier otra cosa que no sea usar archivos war.
Solución
¿Es realmente sólo una aplicación Rails que desea implementar en IIS, o debe ser JRuby?Si es solo Ruby on Rails en lugar de JRuby, entonces aquí está tu guía paso a paso.Pero si es JRuby con quien desea trabajar con IIS, no busque más.A continuación se detallan los pasos que seguí;mi entorno es IIS7 en Windows 7 RC, Java 1.6.0_13.
- Primero, descargué JRuby de
http://dist.codehaus.org/jruby/1.3.1/jruby-bin-1.3.1.tar.gz
. - Luego extraje el archivo para
C:\JRuby
. - Configuré la variable de entorno JRUBY_HOME en
c:\JRuby\jruby-1.3.1
. - yo añadí
%JRUBY_HOME%\bin
al camino.
Seguiré los siguientes pasos con capturas de pantalla intercaladas.
Ejecutemos jruby para confirmar que se instaló 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.Usemos JRuby para instalar Rails:
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...
Creemos una aplicación Rails llamada 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
Corramos WEBrick
para asegurarse de que todo funcione 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
Navegar a http://localhost:3000/
y confirme que aparece su aplicación Rails.
Efectivamente, ahí está.
Lo siguiente es configurar un mecanismo mediante el cual las solicitudes seleccionadas realizadas a IIS se envíen a JRuby.Para hacer esto, se necesita una reescritura de URL/proxy inverso.solía Reescritura ISAPI 3 para esto.Puede optar por utilizar una herramienta diferente (por ejemplo, Microsoft ISA).ISAPI Rewrite 3 tiene una buena relación calidad-precio: 99 dólares por servidor y viene con un período de prueba de 45 días.
Para ISAPI Rewrite 3, configuré el httpd.conf
archivo de configuración de la siguiente manera:
RewriteEngine on RewriteBase / RewriteLog "C:\temp\rewrite.log" RewriteLogLevel 9 RewriteProxy jror/(.*) http://localhost:3000/$1
Este proxy URL del formulario
http://localhost/jror/abc123
a
http://localhost:3000/abc123
Entonces ahora podemos navegar a http://localhost/jror/
y ver la solicitud atendida por JRuby pero a través de IIS:
Y adivina qué: sin guerras!Cualquier cambio en su aplicación Rails debería llegar directamente.
Aquí hay una captura de pantalla de mi consola Firebug que muestra los encabezados de respuesta para esa página:
Por supuesto, esto es más una configuración de desarrollo que de producción, pero para uso en producción probablemente necesitarás usar un servidor de aplicaciones listo para producción como Glassfish, lo que implicará el uso de esas molestas guerras ;-)
Si desea implementar en un servidor de aplicaciones Java usando wars, puede usar Curruca para empaquetar fácilmente su aplicación en una guerra.
Para ejecutar Glassfish V3, se requieren algunos pasos adicionales.La forma más rápida de implementar y ejecutar sus aplicaciones Rails es usar la gema GlassFish, que consta únicamente del kernel GlassFish v3 (Grizzly
) y algunas utilidades, proporcionando así una configuración mínima.Instalemos 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...
Ejecute 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 puedes ver, estás ejecutando Glassfish pero aún así no se requieren guerras.No se necesitan cambios en el lado de IIS, aparte de (en httpd.conf
en mi configuración) cambiando el proxy para que apunte a la dirección IP y al puerto utilizado por el servidor Glassfish.Si desea hacer todo lo posible e instalar el servidor Glassfish completo y ejecutar aplicaciones Rails en él, también puede seguir estas instrucciones del equipo de Glassfish.Cubren la instalación y ejecución de Glassfish, el servidor, la implementación y anulación de la implementación de aplicaciones Rails y la ejecución de las aplicaciones en modo de producción.
Esto es lo que necesita para crear archivos war para el servidor Glassfish completo.
Instalar Reinita:
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 Reinita:
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!
Otros consejos
Es necesario primero instalar Tomcat. Ver este cómo-a para configurar Tomcat junto con IIS.
Con JRuby que se va a construir archivos WAR. Simplemente dejar esto en la carpeta webapps de Tomcat y ya está listo para ir.
Actualización: Ok, es necesario integrar dos tecnologías que no estaban destinados a ser utilizados en conjunto: IIS y JRuby. Lo bueno es que es a la vez JRuby Java y Ruby y se puede usar lo mejor de ambos mundos. Ruby es más productivo y divertido para codificar con, pero Java es mejor para el despliegue (sobre todo cuando hay que hacerlo con IIS). Así que mi consejo sigue siendo. Crear un archivo de la guerra, instalar Tomcat y desplegar el archivo de la guerra allí. Despliegue del archivo de la guerra es tan fácil como copiar en la carpeta de aplicaciones web. Estos son los pasos que debe seguir:
- Instalar Tomcat
- Integrar Tomcat con IIS ISAPI mediante el plug-in (puedo ayudar si necesita más información sobre esto)
- Crea un archivo WAR (IDE Netbeans 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 punto . En él se describe cómo puede ejecutar RoR con IIS. Creo que para JRuby el procedimiento sería lo mismo. De todos modos, un enfoque CGI es la única manera si se quiere evitar los archivos WAR.