4

次のガイドを使用する

http://spontaneousderivation.com/2012/09/30/rails-3-2-on-a-shared-dreamhost-server/

Ruby1.9.3を使用してRails3.2.8アプリケーションを起動し、fcgiを使用してDreamhost共有ホスティングで実行することができました(これが最善のソリューションではないことはわかっていますが、アプリケーションを3.0にダウングレードしたくないので、スキルが不足していますとVPSのお金)。

DH wikiのガイドに従う:

http://wiki.dreamhost.com/RMagick

http://wiki.dreamhost.com/Image_Magick#Compiling_ImageMagick_on_your_DreamHost_account

自分のバージョンのImageMagicとRMagicをローカルgemとしてインストールしました。

ただし、RMagic機能を使用してアプリケーションを実行しようとすると、error.logで次のエラーが発生します。

「スクリプトヘッダーの早期終了:dispatch.fcgi」。

アップローダーで次の行のコメントを解除すると、この問題が発生していることがわかりました。

include CarrierWave::RMagick

シェルから実行dispatch.fcgiしてもエラーは報告されません。

LD_LIBRARY_PATH問題はまたは他の環境変数(DH wikiにリストされている)が原因である可能性があると思いますが、それらを自分.bashrcのに含めようとしましたが、効果は.bash_profileありdispatch.fcgiませんでした。

4

2 に答える 2

2

このソリューションは、2013 年 3 月 7 日現在有効です。これを使用して、新しいアプリを DH にデプロイしました。

あなたの宝石ファイルで...

gem 'paperclip'

次に、アプリ ディレクトリから「bundle install」を実行します。

public/dispatch.fcgi で...以下のコードをコピーし、APPNAME を config/application.rb モジュールにリストされている名前に、USER を DH ユーザー名に、RUBY を "which からの出力にリストされている特定の ruby​​ バージョンに置き換えます。 ruby" を DH ssh セッションのコマンド ラインで実行します。

#!/home/USER/.rvm/rubies/RUBY/bin/ruby

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

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

Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(APPNAME::Application)

RVM が有効にインストールされていれば、ペーパークリップを機能させるために特別な処理は必要ありません。上記の詳細 (具体的には、dispatch.fcgi がわずかに変更されています) とは別に、次のガイドに従うことができます。ドリームホスト サーバー/ .

于 2013-03-08T06:55:13.823 に答える
1

RMagick と ImageMagick は、コンパイルや実行時に問題があることで有名です。MiniMagick のようなものを優先して RMagick を捨てることをお勧めします。CarrierWave には、代わりに使用できる MiniMagick プロセッサがあるようです: https://github.com/jnicklas/carrierwave/blob/master/lib/carrierwave/processing/mini_magick.rb

MiniMagick は ImageMagick プロセスに直接シェルアウトするだけなので、コンパイル済みバイナリへのリンクの問題を回避できます。過去には、RMagick がメモリ リークなどの原因になることも知られていました。

また、Heroku の導入を真剣に検討する必要があります。単一の dyno は無料で、あなたの体験がより良いものになると確信しています。

于 2012-11-15T14:43:54.380 に答える