2013-03-21 42 views
0

我遇到以下问题: 在我的托管(www.site5.com)上,ruby相当老旧 - 1.8.7,服务器在Apache下运行,Phusion Passenger用于部署。 支持团队安装了一个RVM,以便我可以使用ruby 1.9.3。然而,即使安装一个简单的Rails应用程序,服务器报告dispatch.fcgi和rails for phusion

Internal Server Error 

The server encountered an internal error or misconfiguration and was unable to complete your request. 

More information about this error may be available in the server error log. 

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request. 

的问题是在配置dispatch.fcgi,并将.htaccess文件这我在这里:

dispatch.fcgi

#!/home/foo/.rvm/rubies/ruby-1.9.3-p392/bin/ruby 
    ENV['RAILS_ENV'] ||= 'production' 
    ENV['HOME'] ||= `echo ~`.strip 
    ENV['GEM_HOME'] = File.expand_path('~/.rvm/gems/ruby-1.9.3-p392') 
    ENV['GEM_PATH'] = File.expand_path('~/.rvm/gems/ruby-1.9.3-p392') + ":" + 
     File.expand_path('~/.rvm/gems/[email protected]') 
    require 'fcgi' 
    require File.join(File.dirname(__FILE__), '../config/environment.rb') 
    class Rack::PathInfoRewriter 
    def initialize(app) 
     @app = app 
    end 
    def call(env) 
     env.delete('SCRIPT_NAME') 
     parts = env['REQUEST_URI'].split('?') 
     env['PATH_INFO'] = parts[0] 
     env['QUERY_STRING'] = parts[1].to_s 
     @app.call(env) 
    end 
    end 
Rack::Handler::FastCGI.run Rack::PathInfoRewriter.new(try::Application) 

.htaccess

AddHandler application/x-httpd-php52 .php 
<IfModule mod_fastcgi.c> 
AddHandler fastcgi-script .fcgi 
</IfModule> 
<IfModule mod_fcgid.c> 
AddHandler fcgid-script .fcgi 
</IfModule> 

Options +FollowSymLinks +ExecCGI 
#Change to your environment 
RailsEnv production 
RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/stats/(.*)$ [OR] 
RewriteCond %{REQUEST_URI} ^/failed_auth.html$ 
RewriteRule .* - [L] 
RewriteRule ^$ index.html [QSA] 
RewriteRule ^([^.]+)$ $1.html [QSA] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] 

支持团队努力尝试,但到目前为止我们h AVE找不到出路......

回答

2

检查是否真正得到红宝石的版本,你认为你的运行dispatch.fcgi,例如通过增加

提高RUBY_VERSION

首先在文件中看到什么输出它产生的时候用网页浏览器去网站(希望回溯到那里,他们在我的情况。)

我只是与fsdata.se网络酒店类似的情况作斗争。即使使用像你这样的#!/ shebang行,该文件实际上是由ruby 1.8.7执行的!解决方法是制作一个dispatch.fcgi,只执行正确的ruby版本执行真正的调度脚本,如下所示(修改为您的路径):

exec(“/ usr/bin/env /home/foo/.rvm/rubies/ruby-1.9.3-p392/bin/ruby /家庭/富/ [路径到您的Rails应用程序] /public/realdispatch.fcgi“)

的内容realdispatch.fcgi与您的dispatch.fcgi类似。我从dreamhost得到它,这是一个很好的资源页面。

我的.htaccess(由FSDATA产生的)看起来是这样的:

RewriteEngine On 
RewriteBase /
RewriteRule  ^$ index.html [QSA] 
RewriteRule  ^([^.]+)$ $1.html [QSA] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule  ^(.*)$ dispatch.fcgi [QSA,L] 

现在,一切正常,只是我的资产URL不能被正确加载 - 对一个还在工作)

+0

(UPDATE。 :......刚发现这个错误使得资产变得怪异 - 它与此无关,所以上述应该是一个适当的解决方法,从我目前所知道的情况来看)。 – inspironen 2013-06-22 22:30:56

+0

感谢您的想法!工作人员以某种方式解决了这个问题(感谢他们),所以实际上我对我来说仍然是一个谜。对于解决问题的其他人来说,你的答案可能会有用。 – Andrew 2013-06-23 12:52:50