我正在尝试在共享服务器上安装应用程序。如果我理解正确,因为我使用的是共享服务器,并且 Dreamhost 不认为 rails 3.2.8 我必须使用 FCGI,尽管我不确定如何安装并使其正常运行。
从本教程http://wiki.dreamhost.com/Rails_3。
据我了解,我做了什么,
- 在 dreamhost 中,激活 PHP 5.xx FastCGI 并确保未选中 Phusion Passenger
- 在我的本地机器上创建一个应用程序
- 因为 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"
- 上传到一个文件夹并指向dreamhost中的公用文件夹
- 确保 dispatch.fcgi 有 777 用于写入
- ssh 并在公用文件夹中运行以下命令: .
/dispatch.fcgi
交叉我的手指但它不起作用我收到以下错误
./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