如何在 Windows Server 2008 上提供 Ruby on Rails 应用程序?

如何在 Windows Server 2008 上提供 Ruby on Rails 应用程序?

过去几个小时我都试图让 Ruby on Rails 在 Windows 服务器上运行,但是没有成功。

起初我尝试通过 IIS7 的 FastCGI 支持配置一个测试应用程序,但相关文档不太好。我一直在关注这篇博文和这个和这个和这个但似乎一切都缺少了重要步骤,或者已经过时了。而且每篇文章都不断链接回来自 ruby​​onrails.org 的 Howto那是不存在的。

我的感觉是,即使我设法让它工作,IIS 的 FastCGI 也不足以在生产环境中使用。

因此,看起来我最好的选择是在 IIS 中设置一个指向 Apache 和 Mongrel/Passenger 的反向代理,使用到达率和 UrlRewrite。还有其他人在 Windows 堆栈上部署 Rails 应用程序时遇到困难吗?我的方法正确吗?您能告诉我如何更好地配置它吗?

我相信 Plesk 已经安装了使用不同端口在此服务器上运行的 Apache/Tomcat 实例,因此添加另一个虚拟主机应该不难;最困难的部分似乎是通过 IIS 设置反向代理。


附录

自从发布这篇文章以来,我已经构建了一个运行 Linux 的虚拟服务器,并使用 Apache 为我们的 Rails 产品提供服务,乘客Ruby 企业版

Linux 是一种非常简单、便宜且可靠的选择,试图将 Rails 的方枘塞进 Windows/IIS 的圆孔中是愚蠢的行为。

唯一可能的例外是您的 Windows 环境支持 Java,并且您可以使用 JRuby。从各方面来看,它都是更好的 Ruby 实现之一。否则,请放弃并保持理智。

答案1

保持理智!!!Windows 2008 的 RoR 尚未问世。似乎一切才刚刚赶上 Windows 2003。请留意 Microsoft 的 IIS 版 IronRuby。不过它还没有成熟。

在此之前,请寻找一个临时解决方案。使用 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 可以工作并且速度极快,但不确定它是否可扩展。

答案2

在 Windows 上部署 ROR rails 应用程序的最佳方法是使用带有 glassfish gem 的 jruby。此设置使得使用反向代理将对 glassfish 的请求代理到应用程序服务器变得非常容易。我实际上正在我的博客上编写此类任务的说明,并使用以下博客文章中包含的信息作为垫脚石。

http://danielhill.com.au/blog/2009/04/running-redmine-on-windows-with-jruby-on-rails-and-glassfish/

由于我使用的是 Windows 2003 和 iis6,因此我使用 Managed Fusion 作为反向代理。

答案3

为什么不使用 virtualbox 或 vmware 运行 Linux 操作系统的虚拟化实例?

答案4

我也是同样的情况。一开始使用 FastCGI,但遇到了问题。后来我改变了方向,尝试使用 ARR,但始终找不到可靠的文档,两次尝试都以失败告终(其中一次几乎是灾难性的)。

我之所以选择这个,是因为我将再次尝试使用 ARR。我要说的是,过去我曾使用 Apache 来服务 RoR,效果非常好。在我上一个由于 ASP.NET 应用程序而需要 IIS 的环境中,我使用 Apache 来引导使用 Apache 托管的静态内容、使用 IIS 托管的 .NET 应用程序以及托管在一组 mongrel 实例上的 rails 应用程序之间的流量。该设置对我来说效果很好,但现在我正在使用一个主要目的是托管在 IIS 7.5 上的 .NET 网站的环境,我对正确设置它所需的信息量感到非常失望。

相关内容