7

有没有人有关于设置 jRuby 以使用 IIS 的明确说明。

编辑:

我正在寻找的是使用 IIS 和 jRuby 让 Ruby on Rails 应用程序在 Windows 上运行的分步说明。原因是因为在野外提出问题时,除了“使用 Linux”之外,我找不到其他任何东西。对于大多数人来说,Windows 是主要的开发和部署环境,因此使用基于 Linux 的服务器是不可能的。IIS 也包含在 Windows 中,并提供与 Active Directory 的出色集成,因此使用 Apache 也是不可能的。

最后一件事是使用战争文件是一场噩梦,请包含有关如何通过仅复制文件或使用战争文件以外的任何其他方式来部署 Rails 应用程序的说明。

4

2 回答 2

10

它实际上只是您想在 IIS 上部署的 Rails 应用程序,还是必须是 JRuby?如果它只是 Ruby on Rails 而不是 JRuby,那么这里是您的分步指南。但是,如果您想使用 IIS 是 JRuby,那就别无所求。以下是我遵循的步骤;我的环境是 Windows 7 RC 上的 IIS7,Java 1.6.0_13。

  1. 首先,我从http://dist.codehaus.org/jruby/1.3.1/jruby-bin-1.3.1.tar.gz.
  2. 然后我将存档解压缩到C:\JRuby.
  3. 我将环境变量 JRUBY_HOME 设置为c:\JRuby\jruby-1.3.1.
  4. 我添加%JRUBY_HOME%\bin到路径中。

我将在接下来的步骤中穿插屏幕抓取。

让我们运行 jruby 来确认它是否安装成功:

C:\用户\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]

到目前为止还可以。让我们使用 JRuby 安装 Rails:

C:\Users\Vinay>gem install json-jruby
C:\Users\Vinay>gem install rails --no-rdoc
JRuby 限制 openssl 加载。gem install jruby-openssl 以获得全面支持。
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
成功安装activerecord-2.3.3
成功安装 rack-1.0.0
成功安装actionpack-2.3.3
成功安装actionmailer-2.3.3
成功安装activeresource-2.3.3
成功安装rails-2.3.3
安装了 6 个宝石
为 activerecord-2.3.3 安装 ri 文档...
正在为 rack-1.0.0 安装 ri 文档...
正在为 actionpack-2.3.3 安装 ri 文档...
为 actionmailer-2.3.3 安装 ri 文档...
为 activeresource-2.3.3 安装 ri 文档...
正在为 rails-2.3.3 安装 ri 文档...

让我们创建一个名为的 Rails 应用程序jror

C:\Users\Vinay\Projects>rails new jror
      创造
      创建应用程序/控制器
      创建应用程序/助手
      创建应用程序/模型
      创建应用程序/视图/布局
      创建配置/环境
      创建配置/初始化程序
      创建配置/语言环境
      创建数据库
      创建文档
      创建库
      创建库/任务
      创建日志
      创建公共/图像
      创建公共/javascripts
      创建公共/样式表
      创建脚本/性能
      创建测试/夹具
      创建测试/功能
      创建测试/集成
      创建测试/性能
      创建测试/单元
      创建供应商
      创建供应商/插件
      创建 tmp/会话
      创建 tmp/sockets
      创建 tmp/缓存
      创建 tmp/pids
      创建耙文件
      创建自述文件
      创建应用程序/控制器/application_controller.rb
      创建 app/helpers/application_helper.rb
      创建 config/database.yml
      创建 config/routes.rb
      创建 config/locales/en.yml
      创建 config/initializers/backtrace_silencers.rb
      创建 config/initializers/inflections.rb
      创建 config/initializers/mime_types.rb
      创建 config/initializers/new_rails_defaults.rb
      创建 config/initializers/session_store.rb
      创建 config/environment.rb
      创建配置/boot.rb
      创建 config/environments/production.rb
      创建 config/environments/development.rb
      创建配置/环境/test.rb
      创建脚本/关于
      创建脚本/控制台
      创建脚本/dbconsole
      创建脚本/销毁
      创建脚本/生成
      创建脚本/运行器
      创建脚本/服务器
      创建脚本/插件
      创建脚本/性能/基准
      创建脚本/性能/分析器
      创建 test/test_helper.rb
      创建测试/性能/browsing_test.rb
      创建 public/404.html
      创建 public/422.html
      创建 public/500.html
      创建 public/index.html
      创建公共/favicon.ico
      创建 public/robots.txt
      创建 public/images/rails.png
      创建 public/javascripts/prototype.js
      创建 public/javascripts/effects.js
      创建 public/javascripts/dragdrop.js
      创建公共/javascripts/controls.js
      创建 public/javascripts/application.js
      创建文档/README_FOR_APP
      创建日志/server.log
      创建日志/production.log
      创建日志/development.log
      创建日志/test.log

让我们运行WEBrick以确保一切都按预期工作:

C:\Users\Vinay\Projects\jror>jruby 脚本/服务器
=> 启动 WEBrick
=> Rails 2.3.3 应用程序从 http://0.0.0.0:3000 开始
JRuby 限制 openssl 加载。gem install jruby-openssl 以获得全面支持。
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
=> 使用 -d 调用以分离
=> Ctrl-C 关闭服务器
[2009-07-21 17:51:21] INFO WEBrick 1.3.1
[2009-07-21 17:51:21] 信息 ruby​​ 1.8.6 (2009-06-15) [java]
[2009-07-21 17:51:21] 信息 WEBrick::HTTPServer#start: pid=2440 端口=3000

导航http://localhost:3000/并确认您的 Rails 应用程序出现。

WEBrick 上的 Rails 应用程序

果然,就在那里。

接下来是建立一种机制,将向 IIS 发出的选定请求代理到 JRuby。为此,需要 URL 重写器/反向代理。为此,我使用了ISAPI Rewrite 3。您可以选择使用不同的工具(例如,Microsoft ISA)。ISAPI Rewrite 3 每台服务器 99 美元,物超所值,试用期为 45 天。

对于 ISAPI Rewrite 3,我将httpd.conf配置文件设置如下:

重写引擎开启
RewriteBase /
重写日志“C:\temp\rewrite.log”
RewriteLogLevel 9
RewriteProxy jror/(.*) http://localhost:3000/$1

这代理了表单的 URL

http://localhost/jror/abc123

http://localhost:3000/abc123

所以现在,我们可以通过 IIS 导航http://localhost/jror/并查看 JRuby 提供的请求:

通过 IIS 在 WEBrick 上运行 Rails 应用程序

猜猜看:没有战争!对 Rails 应用程序的任何更改都应直接通过。

这是我的 Firebug 控制台的屏幕截图,显示了该页面的响应标头:

替代文字

当然,这更像是一种开发设置,而不是生产设置——但对于生产用途,您可能需要使用可用于生产的应用服务器,例如 Glassfish,这将需要使用那些讨厌的战争 ;-)

如果您确实想使用战争部署到 Java 应用服务器,您可以使用Warbler轻松将您的应用程序打包到战争中。

要在 Glassfish V3 上运行,需要一些额外的步骤。部署和运行 Rails 应用程序的最快方法是使用 GlassFish gem,它仅包含 GlassFish v3 内核 ( Grizzly) 和一些实用程序,因此提供了最小膨胀设置。让我们安装gem:

C:\Users\Vinay\Projects\jror>gem install glassfish
JRuby 限制 openssl 加载。gem install jruby-openssl 以获得全面支持。
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
成功安装 glassfish-0.9.5-universal-java
已安装 1 个宝石
为 glassfish-0.9.5-universal-java 安装 ri 文档...
为 glassfish-0.9.5-universal-java 安装 RDoc 文档...

在 Glassfish 上运行 Rails 应用程序:

C:\Users\Vinay\Projects>glassfish jror
在开发环境中启动 GlassFish 服务器:192.168.0.17:3000...
将日志消息写入:jror/log/development.log。
按 Ctrl+C 停止。

如您所见,您在 Glassfish 上运行,但仍然不需要战争!httpd.conf除了(在我的设置中)将代理更改为指向 Glassfish 服务器使用的 IP 地址和端口之外,无需在 IIS 端进行任何更改。如果您想全力以赴并安装完整的 Glassfish 服务器并在其上运行 Rails 应用程序,您不妨按照Glassfish 团队的这些说明进行操作。它们包括安装和运行 Glassfish、服务器、部署和取消部署 Rails 应用程序以及在生产模式下运行应用程序。

这是为完整的 Glassfish 服务器创建战争文件所需的内容。

安装莺:

C:\Users\Vinay\Projects>gem 安装莺
JRuby 限制 openssl 加载。gem install jruby-openssl 以获得全面支持。
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
成功安装warbler-0.9.13
已安装 1 个宝石
为 warbler-0.9.13 安装 ri 文档...
为 warbler-0.9.13 安装 RDoc 文档...

运行莺:

C:\Users\Vinay\Projects\jror>warble
mkdir -p tmp/war/WEB-INF/gems/规范
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
战争/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
规范 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
战争/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/product
离子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
选项.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/战争/图像
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/样式表
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
 驱动器 C 中的卷没有标签。
 卷序列号为 0C8D-1418

 C:\Users\Vinay\Projects\jror 目录

22/07/2009 15:55 13,180,634 jror.war
               1 个文件 13,180,634 字节
               0 Dir(s) 7,730,462,720 字节空闲

呸!

于 2009-07-20T19:01:51.407 回答
5

您需要先安装 Tomcat。请参阅此如何将 Tomcat 与 IIS 一起设置。

使用 JRuby,您将构建 WAR 文件。只需将它们放入 Tomcat 的 webapps 文件夹中,您就可以开始使用了。

更新:好的,您需要集成两种不应该一起使用的技术:IIS 和 JRuby。好消息是 JRuby 既是 Java 又是 Ruby,您可以使用两者中最好的。使用 Ruby 编写代码效率更高、更有趣,但 Java 更适合部署(尤其是在需要使用 IIS 时)。所以我的建议仍然成立。创建一个war文件,安装Tomcat并在那里部署war文件。部署 war 文件就像将它复制到 webapps 文件夹中一样简单。这些是您需要遵循的步骤:

  • 安装 Tomcat
  • 使用 ISAPI 插件将 Tomcat 与 IIS 集成(如果您需要更多信息,我可以提供帮助)
  • 创建一个 WAR 文件(Netbeans IDE 可以为您完成)
  • 将WAR文件复制到Tomcat的webapps文件夹中

如果您仍然不想使用 WAR 文件,请查看此博客点。它描述了如何使用 IIS 运行 RoR。我相信对于 JRuby 来说,这个过程是一样的。无论如何,如果您想避免使用 WAR 文件,CGI 方法是唯一的方法。

于 2009-07-06T13:41:33.560 回答