0

我在 Windows 2003 R2 SP2 服务器上部署了一个 Rails 3.2.3 应用程序(ruby 1.9.3p125)(不要问)。这是我的 Gemfile:

gem 'mysql2'
gem 'tiny_tds'
gem 'activerecord-sqlserver-adapter'
gem 'pdf-toolkit', "~> 1.0.0.rc1"
gem 'mongrel', '>= 1.2.0.pre2'
gem 'dispatcher'

我运行 Apache 2.2,并有两个杂种作为 Windows 服务运行。Apache 启动正常,没有报告错误。应用程序正在运行。它简单地做一些pdftk表格填写并发送一个pdf文件,即:

send_file(....)

在开发中,我得到了正确的 pdf,在 Windows 上的生产中,我得到了一个空的 pdf,这在我的 error.log 中:

2012-05-23 10:08:42 -0700: Error calling Dispatcher.dispatch #<NameError: uninitialized constant   ActionController::CgiRequest>
c:/ruby193/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/rails.rb:76:in `block in process'
<internal:prelude>:10:in `synchronize'
c:/ruby193/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/rails.rb:74:in `process'
c:/ruby193/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel.rb:165:in `block in process_client'
c:/ruby193/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel.rb:164:in `each'
c:/ruby193/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel.rb:164:in `process_client'
c:/ruby193/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel.rb:291:in `block (2 levels) in run'

我在 Rails 2.3.8 和 Ruby 1.8.7 上运行了这个,Apache 配置没有改变,因为它运行正确,所以我不认为它与 Apache 配置有关,我确定它与新的配置有关由于 Rails 3,我不得不添加杂种东西。

更新:

我放弃了,并尝试使用薄,效果很好。

看到大多数关于在 Windows 上安装 Thin 的帖子都来自 3.0.x 时间范围。从 3.2.3 和 Ruby 1.9.3 开始,我会稍微复习一下。

您仍然需要分两遍安装薄

gem install eventmachine --pre
gem install thin

您必须安装 ruby​​ 安装程序 DevKit

测试后,我重新做了我的 Apache 配置以使用瘦:

NameVirtualHost *:80
<VirtualHost *:80>
  ServerName pdftk.neeis.com
  DocumentRoot E:/Apache/pdftk/public/
  RewriteEngine On
  <Proxy balancer://thinservers>
    BalancerMember http://127.0.0.1:3005
    BalancerMember http://127.0.0.1:3006
  </Proxy>
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule ^/(.*) balancer://thinservers%{REQUEST_URI} [P,QSA,L]
  ProxyPass / balancer://thinservers/
  ProxyPassReverse / balancer://thinservers/
  ProxyPreserveHost On
  ProxyPass /images !
  ProxyPass /stylesheets !
  ProxyPass /javascripts !      
  <Proxy * >
    Order Deny,Allow
    Allow from all
  </Proxy>
  ErrorLog E:/Apache/Logs/error.log
  CustomLog E:/Apache/Logs/access.log combined
  LogLevel debug
</VirtualHost>

接下来就是将瘦身变成windows服务的繁琐任务,必须安装windows 2003 Resource Kit,将svrany.exe复制到System32,使用sc命令创建服务,然后做一些regedt32hackery。但是,它有效!

4

1 回答 1

0

编辑:

有些 gem 还不支持 Rails 3,试试 Thin。

据我所知,mongrel_cluster 还不支持 Rails 3。最快的解决方案是切换到 Thin,它支持多个 Rails 实例,其配置文件与 Mongrel 的配置文件非常相似。

信用:https ://stackoverflow.com/a/5660824/643500

于 2012-05-23T18:06:11.877 回答