Instructions pour configurer IIS et JRuby
-
23-08-2019 - |
Question
Quelqu'un a-t-il une instruction claire pour la configuration de JRuby pour travailler avec IIS.
Éditer:
Ce que je recherche, ce sont des instructions étape par étape pour obtenir une application Ruby on Rails fonctionnant sur Windows en utilisant IIS et JRuby. La raison en est que je ne trouve rien d'autre que "utiliser Linux" lorsque vous posez la question dans la nature. Pour la plupart des gens, Windows est le principal environnement de développement et de déploiement, donc l'utilisation d'un serveur basé sur Linux est hors de question. IIS est également inclus avec Windows et fournit une intégration supérieure avec Active Directory, donc l'utilisation d'Apache est également hors de question.
La dernière chose consiste à utiliser des fichiers de guerre est un cauchemar, veuillez inclure des instructions sur la façon de déployer des applications Rails en copiant simplement les fichiers ou quoi que ce soit à utiliser des fichiers de guerre.
La solution
Est-ce en fait juste une application Rails que vous souhaitez déployer sur IIS, ou doit-elle être JRuby? Si c'est juste Ruby sur Rails plutôt que Jruby, alors Voici votre guide étape par étape. Mais si c'est JRUBY, vous voulez travailler avec IIS, ne cherchez pas plus loin. Vous trouverez ci-dessous les étapes que j'ai suivies; Mon environnement est IIS7 sur Windows 7 RC, Java 1.6.0_13.
- Tout d'abord, j'ai téléchargé JRuby à partir de
http://dist.codehaus.org/jruby/1.3.1/jruby-bin-1.3.1.tar.gz
. - Ensuite, j'ai extrait les archives pour
C:\JRuby
. - Je définis la variable d'environnement JRUBY_HOME
c:\JRuby\jruby-1.3.1
. - J'ai ajouté
%JRUBY_HOME%\bin
au chemin.
Je vais traverser les prochaines étapes avec des captures d'écran entrecoupées.
Exécutons JRuby pour confirmer qu'il a été installé avec succès:
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]
Ok jusqu'à présent. Utilisons JRuby pour installer des 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...
Créons une application Rails appelée 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
Courons WEBrick
Pour s'assurer que tout fonctionne comme prévu:
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
Aller vers http://localhost:3000/
et confirmez que votre application Rails apparaît.
Effectivement, il y en a.
La prochaine chose consiste à mettre en place un mécanisme par lequel les demandes sélectionnées faites à l'IIS sont proxées à JRuby. Pour ce faire, un réécriture / proxy inverse d'URL est nécessaire. j'ai utilisé Isapi réécriture 3 pour ça. Vous pouvez choisir d'utiliser un autre outil (par exemple, Microsoft ISA). Isapi Rewrite 3 est une bonne valeur à 99 $ par serveur et est livré avec une période d'essai de 45 jours.
Pour Isapi Rewrite 3, j'ai mis en place le httpd.conf
Fichier de configuration comme suit:
RewriteEngine on RewriteBase / RewriteLog "C:\temp\rewrite.log" RewriteLogLevel 9 RewriteProxy jror/(.*) http://localhost:3000/$1
Ces proxies URL de la forme
http://localhost/jror/abc123
à
http://localhost:3000/abc123
Alors maintenant, nous pouvons naviguer vers http://localhost/jror/
Et voir la demande desserrée par JRuby mais via IIS:
Et devine quoi: pas de guerres! Toute modification apportée à votre application Rails devrait passer directement.
Voici une capture d'écran de ma console Firebug montrant les en-têtes de réponse pour cette page:
Bien sûr, c'est plus une configuration de développement que celle de production - mais pour une utilisation en production, vous devrez probablement utiliser un appservateur prêt pour la production tel que Glassfish, ce qui entraînera l'utilisation de ces guerres embêtantes ;-)
Si et quand vous souhaitez déployer sur un appservateur Java à l'aide de guerres, vous pouvez utiliser Fauvette Pour un emballage facile de votre application dans une guerre.
Pour fonctionner sur Glassfish V3, des étapes supplémentaires sont nécessaires. Le moyen le plus rapide de déployer et d'exécuter vos applications Rails est d'utiliser le Glassfish Gem, qui ne se compose que du noyau V3 Glassfish (Grizzly
) et certains services publics, donc en donnant une configuration minimale-broche. Installons le gemme:
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...
Exécutez l'application Rails sur 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.
Comme vous pouvez le voir, vous courez sur Glassfish, mais aucune guerre n'est requise! Aucun changement n'est nécessaire du côté IIS, à part (en httpd.conf
dans ma configuration) modifier le proxy pour pointer sur l'adresse IP et le port utilisés par le serveur Glassfish. Si vous souhaitez aller tout le porc et installer le serveur Glassfish complet et y exécuter des applications Rails, vous pouvez aussi suivre ces instructions de l'équipe Glassfish. Ils couvrent l'installation et l'exécution des applications Glassfish, serveur, déploient et indépendamment des applications Rails et exécutant les applications en mode de production.
Voici ce dont vous avez besoin pour créer des fichiers de guerre pour le serveur Glassfish complet.
Installer une paruline:
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...
Faire une paruline:
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
Phew!
Autres conseils
Vous devez d'abord installer Tomcat. Regarde ça comment Pour la mise en place de Tomcat avec IIS.
Avec JRuby, vous allez créer des fichiers de guerre. Déposez-les dans le dossier WebApps de Tomcat et vous êtes prêt à partir.
Mise à jour: Ok, vous devez intégrer deux technologies qui n'étaient pas censées être utilisées ensemble: IIS et JRuBy. La bonne chose est que JRuby est à la fois Java et Ruby et vous pouvez utiliser le meilleur des deux mondes. Ruby est plus productif et amusant à coder, mais Java est meilleur pour le déploiement (surtout quand il faut le faire avec IIS). Donc, mon conseil est toujours possible. Créez un fichier de guerre, installez Tomcat et déployez le fichier de guerre là-bas. Le déploiement du fichier de guerre est aussi simple que de le copier dans le dossier WebApps. Ce sont les étapes que vous devez suivre:
- Installer Tomcat
- Intégrez Tomcat à IIS en utilisant le plug-in Isapi (je peux vous aider si vous avez besoin de plus d'informations à ce sujet)
- Créer un fichier de guerre (NetBeans IDE peut le faire pour vous)
- Copiez le fichier de guerre dans le dossier WebApps de Tomcat
Si vous ne voulez toujours pas utiliser les fichiers de guerre, jetez un œil à ce place de blog. Il décrit comment vous pouvez exécuter ROR avec IIS. Je crois que pour JRuby, la procédure serait la même. Quoi qu'il en soit, une approche CGI est la seule façon si vous souhaitez éviter les fichiers de guerre.