如何在Windows上部署Rails 3应用程序?

7
我一直在寻找可靠地在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上不可用(将是最佳解决方案)。
这些是我想出的可能解决方案:
  • 获得一个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


也可以考虑作为替代方案访问http://torquebox.org。 - Ciaran Archer
3个回答

6
这是我目前正在运行的设置:
  • Windows Server 2008
  • Apache 2.2
  • Thin Server
  • Ruby 1.9.2
  • Rails 3.0.9
这篇优秀的教程 "如何在 Windows Server 2008 EE 上安装和配置 Ruby on Rails" 涵盖了这些方面的安装。我忽略了LDAP和ActiveDirectory,但那里有一个不错的解决方法来安装 Thin server,因为 gem 'thin' 在 Windows 上通常会出问题。
对于生产环境,我设置了 MySQL Server 5.5 来托管我的数据库。Rails 3 需要 mysql2 适配器,但它尚未得到我的 Windows 环境的支持。mysql 适配器也会在 Rails 3 上抛出错误,但是你可以通过安装较旧版本的 libmysql.dll 来解决问题。你只需要将它放入 Ruby192/bin 目录即可。
一旦正确安装了 mysql 适配器和服务器,你就需要创建数据库:
>> mysql -u root -p  
[enter root pw]  
create database production;  
quit;  

(如果找不到“mysql”,您可能需要将MySQL安装添加到路径中。)
最后,设置在your_rails_app/config/database中找到的数据库配置:
# MySQL Production Database
production:
  adapter: mysql
  database: production
  pool: 5
  timeout: 5000
  encoding: utf8
  password: [your_root_password]
  host: localhost

其余部分,包括代理设置和作为Windows服务运行的内容,在"如何在Windows Server 2008 EE上安装和配置Ruby on Rails"中有详细介绍。为确保基本Thin设置正确运行:

thin start -p 3000 -e production

这个命令可以在生产模式下启动使用MySQL数据库的服务器,监听3000端口。唯一缺少的是负载均衡,我希望尽快找到答案!


谢谢Chris。我还想在这里指出,Rails Installer现在可以一次安装ruby 1.9.2和Rails 3.1。请在此处查看:http://railsinstaller.org/ - gamov
这是最佳答案!http://everything-ruby.blogspot.com/2011/04/installing-windows-server-2008-ee-with_10.html - Keating
中国大陆的用户需要通过VPN访问上述URL。 - Siwei

2

个人认为,JRUBY + Tomcat 是您最好的选择,因为Tomcat在Windows上经过验证,而且它和JRUBY都非常稳定。我的第一个想法也是使用Passenger,但很遗憾它仍未移植。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接