我一直在寻找可靠地在Windows上部署Rails 3应用程序的方法。我很震惊,似乎目前没有任何方法可以做到这一点。Apache +少量Mongrel服务解决方案目前不起作用,因为Mongrel无法在守护进程模式下运行,因此我无法将其安装为mongrel_service。
我猜需求应该是:
- 与Rails 3兼容的Web服务器。 - 必须能够作为Windows服务运行,守护进程。 - 如果出现问题,必须能够自动重新启动。 - 必须是生产质量:没有内存泄漏等。 - 应该能够扩展,并同时接受多个请求。 - 尽可能少的黑客攻击。
我发现了这些事情:
- Mongrel对于Rails 3(1.2.0pre)不适合生产环境,我从控制台窗口中很快遇到内存泄漏。应用程序只是退出。 - Mongrel不以守护进程模式(-d)运行Rails 3。 - 因此,Mongrel无法安装为服务。 - Phusion Passenger在Windows上不可用(将是最佳解决方案)。
这些是我想出的可能解决方案:
我猜需求应该是:
- 与Rails 3兼容的Web服务器。 - 必须能够作为Windows服务运行,守护进程。 - 如果出现问题,必须能够自动重新启动。 - 必须是生产质量:没有内存泄漏等。 - 应该能够扩展,并同时接受多个请求。 - 尽可能少的黑客攻击。
我发现了这些事情:
- Mongrel对于Rails 3(1.2.0pre)不适合生产环境,我从控制台窗口中很快遇到内存泄漏。应用程序只是退出。 - Mongrel不以守护进程模式(-d)运行Rails 3。 - 因此,Mongrel无法安装为服务。 - Phusion Passenger在Windows上不可用(将是最佳解决方案)。
这些是我想出的可能解决方案:
- 获得一个Linux盒子,安装Apache + Phusion Passenger并开始使用。
- 使用thin,但作者表示thin进程没有被“监护”。
- 使用Ngnix,但作者表示他只运行了一个默认的应用程序,而不是完整的运行应用程序。
- 使用Ngnix。我认为这个解决方案遇到了与上面相同的问题。
- 使用Linux虚拟化,但我必须解决自动启动等问题。
- 在Tomcat中使用JRuby运行。
这可能是一个方便的工具:http://projectkenai.com/projects/winsw
我希望我们能找到一个真正的解决方案来解决这个问题。
更新:
我同意使用JRuby + j2ee容器是最好的选择。必须解决一些问题,比如带有扩展名的gems等。这里有很多有价值的想法: http://rails-nutshell.labs.oreilly.com/ch14.html#production_r259035_id35801805