0

我正在尝试在共享服务器上安装应用程序。如果我理解正确,因为我使用的是共享服务器,并且 Dreamhost 不认为 rails 3.2.8 我必须使用 FCGI,尽管我不确定如何安装并使其正常运行。

从本教程http://wiki.dreamhost.com/Rails_3

据我了解,我做了什么,

  1. 在 dreamhost 中,激活 PHP 5.xx FastCGI 并确保未选中 Phusion Passenger
  2. 在我的本地机器上创建一个应用程序
  3. 因为 rails 没有创建调度和访问文件,所以我在 /public 文件夹中创建了以下两个文件

dispatch.fcgi #!/home/username/.rvm/rubies/ruby-1.9.3-p327/bin/ruby

ENV['RAILS_ENV'] ||= 'production'
ENV['HOME'] ||= `echo ~`.strip
ENV['GEM_HOME'] = File.expand_path('~/.rvm/gems/ruby 1.9.3-p327')
ENV['GEM_PATH'] = File.expand_path('~/.rvm/gems/ruby 1.9.3-p327') + ":" +
    File.expand_path('~/.rvm/gems/ruby 1.9.3-p327@global')

require 'fcgi' 
require File.join(File.dirname(__FILE__), '../config/environment')

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 ^(.*)$ dispatch.fcgi/$1 [QSA,L] 

ErrorDocument 500 "Rails application failed to start properly"
  1. 上传到一个文件夹并指向dreamhost中的公用文件夹
  2. 确保 dispatch.fcgi 有 777 用于写入
  3. ssh 并在公用文件夹中运行以下命令: ./dispatch.fcgi
  4. 交叉我的手指但它不起作用我收到以下错误

    ./dispatch.fcgi:第 1 行:ENV[RAILS_ENV]:找不到命令 ./dispatch.fcgi:第 1 行:=:找不到命令 ./dispatch.fcgi:第 2 行:ENV[HOME]:找不到命令 ./ dispatch.fcgi:第 2 行:=:找不到命令 ./dispatch.fcgi:第 3 行:意外标记附近的语法错误(' ./dispatch.fcgi: line 3:ENV['GEM_HOME'] = File.expand_path('~/.rvm/gems/ruby 1.9.3- p327')'

做错了吗???哦,如果我在服务器上,我会得到这个Rails application failed to start properly

4

1 回答 1

0

我在一条类似的船上。确保在第一行设置您的用户名。rvm 版本也缺少 dispatch.fcgi 的最后一行。从另一个调度示例中获取最后一行并设置您的应用程序名称。

最后确保您的环境和数据库文件设置正确,并且您拥有所需的 gem,例如 mysql2、fcgi 和 therubyracer。

我还没有解决我的问题,但是一旦我弄清楚需要什么,我会写一篇博客文章。

于 2013-02-22T23:01:28.367 回答