共有サーバーにアプリをインストールしようとしています。共有サーバーを使用していて、Dreamhost が Rails 3.2.8 を想定していないという理由で正しく理解できた場合は、FCGI を使用する必要がありますが、インストール方法と適切な実行方法はわかりません。
このチュートリアルhttp://wiki.dreamhost.com/Rails_3から。
ここで私がしたことを理解するために、
- dreamhost で、PHP 5.xx FastCGI を有効にし、Phusion Passenger がオフになっていることを確認します。
- ローカル マシンでアプリを作成する
- Rails はディスパッチとアクセス ファイルを作成しないため、次の 2 つのファイルを /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 の public フォルダーを参照している
- 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