【发布时间】:2014-10-24 06:16:47
【问题描述】:
所以我是 Ruby/Rails 的新手,并开始在我自己的计算机上使用最新版本编写一个小应用程序。我目前通过 Dreamhost 共享托管,并且到了我想尝试在子域上部署我拥有的东西的地步,我使用新用户设置了该子域。不幸的是,我没有意识到 Ruby 和 Rails 的默认版本已经过时了,所以我开始寻找更新它的方法。一些谷歌搜索,我偶然发现了一些说明,似乎他们应该知道答案:
RAILS 4.0.0 WITH RUBY 2.0 ON A DREAMHOST SHARED SERVER
起初看起来好像它正在工作,ruby 和 rails 都安装得很好并且开始指向最新版本。不幸的是,当我尝试执行最后步骤并设置测试应用程序时,每次都会返回 500 错误。
Rails application failed to start properly
我浏览了我的目录寻找日志文件,并在我的 home/user/logs/subdomain.domain.com/http/error.log 文件中找到了以下内容:
[Thu Oct 23 15:11:41 2014] [error] [client 24.93.22.1] 由于可能的配置错误,请求超出了 10 个内部重定向的限制。如有必要,使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯。
查看 FCGI 和 Rails 的 dreamhost wiki,建议在调试时从控制台运行我的 dispatch.fcgi 并查看它吐出的错误。当我这样做时,似乎什么都没有发生,就像它以某种方式陷入无限循环,直到我第二次按 Enter 键,此时我返回命令提示符。这是我的 dispatch.fcgi 文件,我不太明白这里发生了什么,因为我几乎只是从我发布的第一个链接中复制并粘贴它,我以前从未做过这样的事情。
#!/home/user/ruby/bin/ruby
ENV['RAILS_ENV'] = 'development'
ENV['HOME'] ||= `echo ~`.strip
ENV['GEM_HOME'] = File.expand_path('~/.gems')
ENV['GEM_PATH'] = File.expand_path('~/.gems')
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
这也是我创建并放入主/用户文件夹的 .htaccess 文件,这也是我不太了解的直接复制/粘贴作业。
<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
</IfModule>
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
</IfModule>
Options +FollowSymLinks +ExecCGI
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/dispatch.fcgi/$1 [QSA,L]
ErrorDocument 500 "Rails application failed to start properly"
所以,我意识到 Dreamhost 共享服务器可能不是运行 Rails 的最佳环境,但它是我目前所拥有的,如果我能让它工作,我会很高兴。即使没有办法解决它,我什至会在这一点上解决只是了解到底发生了什么,因为我今天大部分时间都在用头撞墙,在互联网上跑来跑去试图弄清楚我到底在做什么。
【问题讨论】: