0

共有サーバーにアプリをインストールしようとしています。共有サーバーを使用していて、Dreamhost が Rails 3.2.8 を想定していないという理由で正しく理解できた場合は、FCGI を使用する必要がありますが、インストール方法と適切な実行方法はわかりません。

このチュートリアルhttp://wiki.dreamhost.com/Rails_3から。

ここで私がしたことを理解するために、

  1. dreamhost で、PHP 5.xx FastCGI を有効にし、Phusion Passenger がオフになっていることを確認します。
  2. ローカル マシンでアプリを作成する
  3. 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"
  1. フォルダーにアップロードされ、dreamhost の public フォルダーを参照している
  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の最後の行がありません。他のディスパッチ例から最後の行を取得し、アプリケーション名を設定します。

最後に、環境とデータベースファイルが適切に設定されており、mysql2、fcgi、therubyracerなどの必要なgemがあることを確認してください。

私はまだ解決を終えていませんが、何が必要かがわかったらブログに投稿します。

于 2013-02-22T23:01:28.367 に答える