我在 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。但是,它有效!