【问题标题】:Rails Deployment on Win32 Best Practices: Lighty + Sgci在 Win32 上部署 Rails 最佳实践:Lighty + Sgci
【发布时间】:2009-05-16 09:36:58
【问题描述】:

我从这个网站的用户那里得到了一些非常好的指导,我认为一些高级 Rails 人员可以帮助我解决以下问题。

我正在尝试在 win32 服务器上部署一个简单的 Rails 应用程序。

我一直在仔细阅读这些关于 win32 Rails 应用程序部署的说明(请参阅 http://functionalelegant.blogspot.com/2008/05/deploying-rails-on-windows.html)。

我从或多或少的干净 Windows 安装开始,然后下载并安装

  1. 红宝石
  2. LightTPD
  3. 导轨
  4. Zed 的 SCGI Rails Runner
  5. Windows Server 2003 资源工具包工具
  6. Ruby/DBI ADO 包

在那之后,我做了以下事情:

我已经注释掉了 SCGI gem 中的那一行(实际上是造成了麻烦。)

我按照建议创建了目录结构,其中包含日志文件夹。

我修改了 scgi.yaml 文件和 Lighty 配置文件以反映我的环境设置。

之后,我编写了批处理脚本来启动 Lighty 和 SGCI 进程。它们似乎运行正确。但是,在 app-errors.log 中会出现以下几行:

2009-05-15 16:48:06: (mod_scgi.c.2645) fcgi: got a FDEVENT_ERR. Don't know why. 
2009-05-15 16:48:06: (mod_scgi.c.2469) emergency exit: scgi: connection-fd: 7 fcgi-fd: 8 

最后,当我导航到http://localhost:xxxx/ 时,我只看到一个空白页。 更新:我刚刚意识到空白页似乎只是。查看源代码发现以下问题:

2C:/Ruby/lib/ruby/1.8/drb/drb.rb:573:in `load'":C:/Ruby/lib/ruby/1.8/drb/drb.rb:612:in `recv_request'":C:/Ruby/lib/ruby/1.8/drb/drb.rb:911:in `recv_request'"?C:/Ruby/lib/ruby/1.8/drb/drb.rb:1530:in `init_with_client'"<C:/Ruby/lib/ruby/1.8/drb/drb.rb:1542:in `setup_message'"6C:/Ruby/lib/ruby/1.8/drb/drb.rb:1494:in `perform'"8C:/Ruby/lib/ruby/1.8/drb/drb.rb:1589:in `main_loop'"3C:/Ruby/lib/ruby/1.8/drb/drb.rb:1585:in `loop'"8C:/Ruby/lib/ruby/1.8/drb/drb.rb:1585:in `main_loop'"4C:/Ruby/lib/ruby/1.8/drb/drb.rb:1581:in `start'"8C:/Ruby/lib/ruby/1.8/drb/drb.rb:1581:in `main_loop'"2C:/Ruby/lib/ruby/1.8/drb/drb.rb:1430:in `run'"4C:/Ruby/lib/ruby/1.8/drb/drb.rb:1427:in `start'"2C:/Ruby/lib/ruby/1.8/drb/drb.rb:1427:in `run'"9C:/Ruby/lib/ruby/1.8/drb/drb.rb:1347:in `initialize'"2C:/Ruby/lib/ruby/1.8/drb/drb.rb:1627:in `new'"<C:/Ruby/lib/ruby/1.8/drb/drb.rb:1627:in `start_service'"MC:/Ruby/lib/ruby/gems/1.8/gems/scgi_rails-0.4.3/lib/scgi.rb:402:in `run'"HC:/Ruby/lib/ruby/gems/1.8/gems/scgi_rails-0.4.3/bin/scgi_service:61"*C:/Ruby/bin/scgi_service:19:in `load'" C:/Ruby/bin/scgi_service:19:   mesg" too large packet

请注意,“ruby 脚本/服务器”运行良好,但页面无法在外部看到。

有什么想法吗?如果您有任何问题,请告诉我。

【问题讨论】:

  • 您是否专门为 Rails 应用程序运行此服务器(我注意到干净的 Windows 安装评论)?如果是这样,您可以使用 Linux 让您的生活变得更简单。
  • 不幸的是,在这种情况下我没有选择,否则我将使用 Linux。我可能已经完成了:)

标签: ruby-on-rails ruby winapi deployment lighty


【解决方案1】:

我在“部署 Rails 应用程序”中为此编写了这一章。 http://www.pragprog.com/titles/fr_deploy/deploying-rails-applications

基本上,您需要 mongrel、mongrel_service 和带有 mod_proxy_balancer for windows 的 apache 2.2。

您安装了 2 个或更多应用程序实例,而 Mongrel 在不同的端口上运行。您将服务设置为自动启动。

然后你设置 apache 来平衡它们。

这在书中都有概述,我的网站上也有一些较旧的文章 - 如果您搜索“在 windows 上脱轨”,您会发现一些非常过时的东西。 apache+mongrel 方式是目前适用于 Windows 的最佳方式,如果您需要其他帮助,请随时告诉我。我很乐意提供帮助。

【讨论】:

  • 布赖恩,感谢您快速而翔实的回复!我刚刚开始学习并一直在尝试完成“部署 Rails 应用程序”一书中的 Windows 章节。 * 我已经有多个 Mongrel 实例,并在一定范围的端口上运行该应用程序。 * 我对 Pen 有点犹豫,因为它首先需要 Cygwin DLL,然后我给它库后,它说同时处理的进程数量太大。 * 我一直在尝试了解您对 Apache 的提示。 httpd 运行没有错误,但 Rails 应用程序不可用,只是一个空白页... Joe
  • 进程的消息可以忽略。但是不要使用 Pen ......只需使用 apache + mod_proxy_balance,使用虚拟主机,它应该可以正常工作。那本书中应该有 vhost 配置,但你可以以此为例 - svn.napcsweb.com/public/guestbook/config/apache/… 只需更改路径,将其包含在你的主 apache 配置中,让我们看看会发生什么。
猜你喜欢
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 2010-11-25
  • 2017-07-06
  • 1970-01-01
相关资源
最近更新 更多