2010-02-17 21 views
3

我正在研究接受文件上傳的Rails應用程序,以及用戶以後可以修改這些文件的位置。例如,他們可以更改文本文件內容或對圖像執行基本操作,如調整大小,裁剪,旋轉等。針對Rails應用程序使用的文件服務器的建議

目前,文件存儲在與Passenger一起運行的服務器上,以便爲所有應用程序提供服務要求。

我需要將用戶文件移動到專用服務器以在我的設置上分配負載。目前,我們的用戶在一週內上傳大約10GB的文件,這不是很多,但最終會累積起來。

所以我正在通過關於如何實現應用程序服務器和文件服務器之間的通信的不同選項。我想從一個簡單而又非常簡單的解決方案開始。如果它稍後在多個文件服務器上擴展,我會非常高興。

這裏有一些不同的選擇,我一直在研究:

  • 亞馬遜S3。我發現實施我的應用程序有點困難。它增加了「上傳」上傳文件的複雜性(可能多次),請注意,用戶可以使用我的應用修改文件和圖像。除此之外,這將是很好的「設置它,忘記它」的解決方案。
  • 某種簡單的RPC服務器,位於文件服務器上,透明地管理從應用程序服務器端查看時的文件。我還沒有在這裏找到任何標準和經過充分測試的工具,所以這在我看來是更理論化的。然而,在GitHub中構建和使用的Bert和Ernie看起來很有趣,但是可能太複雜了。
  • MogileFS也似乎很有趣。沒有看到它在使用(但這是我的問題:)。

所以我正在尋找不同的(也可能是基於標準的)方法如何實現Web應用程序的文件服務器以及它們如何在野外工作。

回答

0

我認爲S3是你最好的選擇。有了像Paperclip這樣的插件,它非常容易添加到Rails應用程序中,而不必擔心縮放會節省頭痛。

1

您也可以嘗試編譯Dropbox(它們提供源代碼)和ln -s的版本到您的公共/系統目錄,以便回形針保存到它。這樣你就可以從任何桌面遠程訪問這些文件......我還沒有這樣做,所以我不能證明它是多麼容易/難以/有價值,但它是在我的teux deux列表中...... :)

2

使用S3。它是便宜的點菜式,如果人們開始下載他們的文件,您的服務器將不必擔心,因爲您的下載頁面可以直接指向上傳文件的S3 URL。

「Pedro」有一個很好的示例應用程序,與S3在github.com一起使用。

  1. 克隆應用(混帳混帳克隆://github.com/pedro/paperclip-on-heroku.git)
  2. 確保你已經安裝了right_aws寶石。
  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,並在第二行(:bucket =>'your-paperclip-demo')上放置您的存儲桶名稱。
  8. 在本地啓動服務器並將一些文件上傳到本地應用程序。您會從S3插件中看到該文件已上傳到您的新存儲桶中的Amazon S3。

我通常非常無能或不幸,無法獲得這些類型的工作,但佩德羅的小S3上傳應用程序,我很成功。祝你好運。

相關問題