【问题标题】:Carrierwave + fog + aws s3 and rails in productionCarrierwave + 雾 + aws s3 和生产中的导轨
【发布时间】:2015-03-06 06:24:41
【问题描述】:

我刚刚从回形针迁移到carrierwave并成功上传到S3以在我的机器上本地工作,但是在将Rails应用程序部署到我的服务器(使用Ubuntu,Passenger with nginx)之后,它是一个任务工作),当我尝试上传图像时,它会尝试将其保存到 public/uploads/... 这会出现权限被拒绝错误,我到处寻找并搜索以找出它为什么不起作用,并且有一无所获。

我的上传文件:

class AvatarUploader < CarrierWave::Uploader::Base
  include CarrierWave::Compatibility::Paperclip

  storage :fog

  def store_dir
    "/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end


end

雾.rb

CarrierWave.configure do |config|
  config.storage = :fog
  config.fog_credentials = {
    provider:              'AWS',                        # required
    aws_access_key_id:     '*******',                        # required
    aws_secret_access_key: '********',                        # required
    region:                'ap-southeast-2',                  # optional, defaults to 'us-east-1'
  }
  config.fog_directory  = 'publicrant'                          # required
  # config.fog_public     = false   
  config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" } # optional, defaults to {}
end

【问题讨论】:

    标签: ruby-on-rails nginx amazon-s3 carrierwave fog


    【解决方案1】:

    好吧,经过数小时的谷歌搜索并在寻找解决方案时惨遭失败后,事实证明,在生产环境中,它确实需要将文件临时放在 uploads/tmp 中,然后再将其推送到 S3 存储桶

    【讨论】:

      【解决方案2】:

      似乎您没有其他用户的读取权限 (o+r)。检查它使用命令:

      namei -lm <absolute path to your current/public>
      

      并授予读取权限:

      chmod o+r <directory>
      

      在您的情况下,我认为它将是 /home/&lt;user&gt; 目录。

      【讨论】:

      • 权限似乎没问题,我仍然不知道是什么导致了问题
      • 检查public/uploads和其他子目录的权限
      • 但如果我更改权限,这将允许文件保存在公共/上传中,我希望将它们保存到我的 S3 存储桶中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 2012-08-19
      • 2013-10-19
      • 1970-01-01
      • 2014-06-13
      • 2012-11-25
      相关资源
      最近更新 更多