2010-02-17 16 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上传应用程序,我很成功。祝你好运。

相关问题