在过去的几个小时里,我一直试图让 Ruby on Rails 在 Windows 服务器上运行,但没有成功。
起初我尝试通过 IIS7 的 FastCGI 支持配置一个测试应用程序,但是这方面的文档不是很好。我一直在关注这个博客条目,还有这个,这个,还有这个,但是一切似乎都缺少主要步骤,或者已经过时了。并且每篇文章都不断地从 rubyonrails.org 链接回这个不存在的Howto 。
我得到的感觉是,即使我设法完成这项工作,IIS 的 FastCGI 也不足以在生产环境中使用。
所以看起来我最好的选择是在 IIS 中设置一个反向代理,使用ARR和 UrlRewrite 指向 Apache & Mongrel/Passenger。还有其他人坚持在 Windows 堆栈上部署 Rails 应用程序吗?我在正确的轨道上吗?你能给我一个关于如何配置它的更好的想法吗?
我相信 Plesk 已经使用不同的端口在此服务器上安装了运行的 Apache/Tomcat 实例,因此添加另一个虚拟主机应该不难;最困难的部分似乎是通过 IIS 设置反向代理。
附录
自从发布这篇文章以来,我继续构建一个运行 Linux 的虚拟服务器,并使用 Apache、Passenger和Ruby Enterprise Edition为我们的 Rails 产品提供服务。
Linux 是如此简单、便宜和可靠的选择,以至于试图将 Rails 的方形钉塞进 Windows/IIS 的圆孔是一件愚蠢的事。
唯一可能的例外是您的 Windows 环境。支持Java,可以使用JRuby。无论如何,它是更好的 Ruby 实现之一。否则,放弃并保存你的理智。
拯救你的理智!!!Windows 2008 的 RoR 还没有。似乎Windows 2003 几乎没有赶上。请留意Microsoft 的IronRuby for IIS。只是还没有煮熟。
在那之前,找到一个临时解决方案。使用 mongrel 并安装 mongrel_service 的预发布版本以使其与 W2K8 一起使用:
http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/1adf2a73c75c2884/38267c06198e282e?show_docid=38267c06198e282e
我这样做是为了让 Redmine 正常工作,这似乎是目前最可靠的解决方案。我能够恢复一些理智。我已经尝试了您找到的所有文章等等。甚至尝试自己烹饪 IronRuby 并让它与 RoR 基础一起工作,但在 Redmine 上失败了。Mongrel 工作并且非常快,但不确定它是否可扩展。
在 Windows 上部署 ROR rails 应用程序的最佳选择是将 jruby 与 glassfish gem 一起使用。这种设置使得使用反向代理将向 glassfish 的请求代理到服务器应用程序变得非常容易。实际上,我正在我的博客上编写此类任务的说明,并使用以下博客文章中包含的信息作为垫脚石。
http://danielhill.com.au/blog/2009/04/running-redmine-on-windows-with-jruby-on-rails-and-glassfish/
因为我使用的是 Windows 2003 和 iis6,所以我使用 Managed Fusion 作为反向代理。
为什么不使用 virtualbox 或 vmware 运行 linux 操作系统的虚拟化实例?
这是 rubyonrails.org 上 Howto 文章的链接,在您提到的所有文章中都被破坏了:
http://oldwiki.rubyonrails.org/rails/pages/HowToConfigureIIS7
看起来他们移动或启动了一个新的 wiki 服务器,并且没有费心链接到旧的,或类似的。
该教程说要使用旧版本的 ruby (1.8.6),而最新版本 (1.9.x) 应该要快得多。我没有阅读全文,但除非有任何技术问题,否则请务必使用最新版本的 ruby 以获得最佳性能。
我在同一条船上。开始使用 FastCGI 并遇到问题。改变了方向并尝试了 ARR,但始终无法找到可靠的文档,并且两次尝试都导致失败(其中一次更接近灾难)。
我实际上是这样做的,因为我将再次尝试使用 ARR 进行此操作。我会说,在过去,我使用 Apache 来为 RoR 服务,并且效果很好。在我上一个因 ASP.NET 应用程序而需要 IIS 的环境中,我使用 Apache 在我的 Apache 托管的静态内容、我的 IIS 托管的 .NET 应用程序以及我的一组 mongrel 实例上托管的 rails 应用程序之间引导流量。该设置对我来说效果很好,但现在我正在使用一个主要目的是托管在 IIS 7.5 上的 .NET 网站的环境,我对可用于正确设置的信息量感到非常失望.