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

标签 windows ruby-on-rails-3 service

我一直在寻找一种在 Windows 上可靠地部署 Rails 3 应用程序的方法。我很震惊,目前似乎没有任何方法可以做到这一点。 Apache + 少数 Mongrel 服务解决方案目前不起作用,因为 Mongrel 无法在守护进程模式下运行,因此我无法将其安装为 mongrel_service。

我猜的要求应该是:

  • 与 Rails 3 兼容的网络服务器。
  • 必须能够作为 Windows 服务运行,守护进程。
  • 必须能够在出现问题时自动重启。
  • 必须是生产质量:没有内存泄漏等。
  • 应该能够扩展并同时接受多个请求。
  • 减少可能的黑客攻击。

我发现了这些东西:

  • Mongrel 还没有为 Rails 3 (1.2.0pre) 做好生产准备,我在控制台窗口中很快就遇到了内存泄漏。该应用程序刚刚退出。
  • Mongrel 不能在 Rails 3 的守护进程模式下运行 (-d)。
  • 因此不能将 Mongrel 安装为服务。
  • Phusion Passenger 在 Windows 上不可用(这将是最佳解决方案)。

这些是我想到的可能的解决方案:

  • 获取 Linux 机器,安装 Apache + Phusion Passenger 并滚动。
  • Using thin ,然而,作者说精简过程并没有被“保护”。
  • Using Ngnix ,但是,作者说他只是运行了一个默认应用程序,而不是一个完整运行的应用程序。
  • Using Ngnix .我认为此解决方案遇到与上述相同的问题。
  • 使用Linux的虚拟化,但我必须解决自动启动等问题。
  • 在 Tomcat 中的 JRuby 上运行。

这可能是一个方便的工具:http://projectkenai.com/projects/winsw

我希望我们能找到解决这个问题的真正方法。


更新:

我同意 JRuby + j2ee 容器是最好的选择。有些问题必须解决,例如带扩展的 gems 等。这里有很多有值(value)的想法:http://rails-nutshell.labs.oreilly.com/ch14.html#production_r259035_id35801805

最佳答案

这是我目前正在运行的设置:

  • Windows 服务器 2008
  • Apache 2.2
  • 瘦服务器
  • ruby 1.9.2
  • 轨道 3.0.9

这个很棒的教程“How to install and configure Ruby on Rails with Windows Server 2008 EE”涵盖了这些方面的安装。我忽略了 LDAP 和 ActiveDirectory 位,但是那里讨论了一个很好的解决方法来安装瘦服务器,因为 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 服务运行,在“How to install and configure Ruby on Rails with Windows Server 2008 EE”中介绍。要确保您的基本 Thin 设置正确运行:

thin start -p 3000 -e production

这应该使用 MySQL 数据库以生产模式在端口 3000 上启动您的服务器。这里唯一缺少的是负载平衡,我希望尽快找到答案!

关于windows - 如何在 Windows 上部署 Rails 3 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5268794/

相关文章:

c# - 通过 WCF 提供整个库的功能

mysql - 设置 Rails 以查找 LIBMYSQL.dll 的默认位置

mysql - 如何从rails中的数据库加载和制作应用程序脚手架

Android RequestLocationUpdates 到带有额外包的 pendingItent

ruby-on-rails - 本地 Gem Assets 未更新

javascript - 如何正确呈现使用 jQuery 插件的部分模板?

android - 在服务中捕获屏幕上的任何触摸

windows - 启动时的 Websocket 连接 ssl 问题 (Windows)

c 应用程序在 64 位 Windows 中崩溃,但在 32 位 win 服务器中工作正常

c# - 如何在 UWP 应用中以编程方式调暗屏幕