繁体   English   中英

使用回形针,雾和Ceph

[英]Using Paperclip, Fog, and Ceph

我正在编写一个Rails 3应用程序,该应用程序使用Paperclip将视频文件附件转码为其他格式,然后存储生成的文件。 本地存储一切正常,但是我正在尝试使用Paperclip的Fog支持将其存储在我们自己的Ceph集群上的存储桶中。 但是,我似乎找不到正确的配置选项来使Fog与我的Ceph服务器对话。

这是我的Rails课的摘录:

has_attached_file :videofile,
  :storage => :fog,
  :fog_credentials => { :aws_access_key_id => 'xxx', :aws_secret_access_key => 'xxx', :provider => 'AWS'},
  :fog_public => true,
  :url => ":id/:filename",
  :fog_directory => 'replay',
  :fog_host => 'my-hostname',

使用此设置的写入失败,因为Paperclip尝试保存到Amazon S3而非我提供的主机。 我有一个非Rails / non-Paperclip玩具脚本,可以正常工作:

conn = Fog::Storage.new({
   :aws_access_key_id => 'xxx',
   :aws_secret_access_key => 'xxx',
   :host => 'my-hostname',
   :path_style => true,
   :provider => "AWS",
})

这可以正确连接到我的本地Ceph服务器。 因此,我怀疑我在Paperclip中没有正确配置某些内容-但是呢?

这是我认为导致fog.rb引起的连接仅到AWS的相关请求:

def host_name_for_directory
        if @options[:fog_directory].to_s =~ Fog::AWS_BUCKET_SUBDOMAIN_RESTRICTON_REGEX
          "#{@options[:fog_directory]}.s3.amazonaws.com"
        else
          "s3.amazonaws.com/#{@options[:fog_directory]}"
        end
      end

错误仅来自配置不正确的Ceph集群。 对于任何发现此线程的人,只要您:

  1. 为您的Ceph前端正确设置通配符DNS;
  2. 配置为识别为Ceph的Ceph
  3. :fog_credentials传递:host ,这将是Ceph前端的FQDN
  4. :fog_host,显然必须是您的存储桶的URL,例如https://bucket.ceph-server.foobar.com.

回形针可以直接使用。 我不认为它可以在任何可以使用:host地方进行记录,但是它可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM