3

私は、ファイルのアップロードを受け入れ、ユーザーが後でこれらのファイルを変更できる Rails アプリに取り組んでいます。たとえば、テキスト ファイルの内容を変更したり、サイズ変更、トリミング、回転などの画像の基本的な操作を実行したりできます。

現時点では、すべてのアプリケーション要求を処理するために Apache が Passenger で実行されているのと同じサーバーにファイルが保存されています。

セットアップの負荷を分散するために、ユーザー ファイルを専用サーバーに移動する必要があります。現在、ユーザーは 1 週間に約 10 GB のファイルをアップロードしています。これは膨大な量ではありませんが、最終的には増加します。

そのため、アプリケーション サーバーとファイル サーバー間の通信を実装する方法について、さまざまなオプションを検討しています。シンプルで誰にでもできるソリューションから始めたいと思います。後で複数のファイル サーバー間で適切にスケーリングできれば、私は大満足です。

ここに私が調査してきたいくつかの異なるオプションがあります:

  • アマゾンS3. 私のアプリケーションに実装するのは少し難しいと思います。アップロードされたファイルを再度「アップロード」する複雑さが増します (後で複数回行う可能性があります)。ユーザーは私のアプリでファイルや画像を変更できることに注意してください。それ以外は、「設定して忘れる」ソリューションがいいでしょう。
  • ファイル サーバー上に存在し、アプリケーション サーバー側から見たときに透過的にファイルを管理する、ある種の単純な RPC サーバー。ここではまだ標準的で十分にテストされたツールを見つけることができなかったので、これは私の考えではもう少し理論的です。ただし、GitHub で構築および使用されている Bert と Ernie は興味深いように見えますが、複雑すぎて開始することはできません。
  • MogileFS も面白そうです。それが使用されているのを見たことがありません(しかし、それは私の問題です:)。

そのため、Web アプリケーションのファイル サーバーがどのように実装され、実際にどのように機能しているかについて、さまざまな (そしておそらく標準ベースの) アプローチを探しています。

4

3 に答える 3

2

S3 を使用します。それは安価でアラカルトであり、人々がファイルのダウンロードを開始した場合、ダウンロードページはアップロードされたファイルの S3 URL を直接指すことができるため、サーバーに負荷をかける必要はありません.

"Pedro" はgithub.comで S3 で動作する素敵なサンプル アプリケーションを持っています。

  1. アプリケーションをクローンします ( git clone git://github.com/pedro/paperclip-on-heroku.git )
  2. right_aws gem がインストールされていることを確認してください。
  3. Amazon S3 認証情報 (API とシークレット) を config/s3.yml に入れます
  4. Firefox S3 プラグインをインストールします ( http://www.s3fox.net/ )
  5. Firefox S3 プラグインに移動し、API とシークレットを入力します。
  6. S3 プラグインを使用して、「your-paperclip-demo」などの一意の名前のバケットを作成します。
  7. app/models/user.rb を編集し、最後の 2 行目にバケット名を入力します (:bucket => 'your-paperclip-demo')。
  8. サーバーをローカルで起動し、いくつかのファイルをローカル アプリにアップロードします。S3 プラグインから、ファイルが新しいバケットの Amazon S3 にアップロードされたことがわかります。

私は通常、この種のことを機能させるのにひどく無能か不運ですが、Pedro の小さな S3 アップロード アプリケーションで成功しました。幸運を。

于 2010-04-02T13:12:02.230 に答える
1

また、 Dropboxのバージョン(ソースを提供します)をコンパイルして、パブリック/システムディレクトリにln -sして、ペーパークリップが保存するようにすることもできます。このようにして、どのデスクトップからでもリモートでファイルにアクセスできます...私はまだこれを行っていないので、それがどれほど簡単/難しい/価値があるかを証明することはできませんが、それは私のteuxdeuxリストにあります...:)

于 2010-03-13T23:05:01.427 に答える
0

S3が最善の策だと思います。Paperclipのようなプラグインを使用すると、Railsアプリケーションに追加するのは非常に簡単であり、スケーリングについて心配する必要がないため、頭痛の種を減らすことができます。

于 2010-03-03T19:17:21.617 に答える