Carrierwave VPS符号链接不起作用

时间:2013-05-13 13:14:00

标签: ruby-on-rails-3.2 carrierwave vps

我在softlayer VPS上设置了carrierwave。 Carrierwave提供了将文件保存在本地存储中的选项。

如果我使用符号链接public/imagesshared_path/images,那么图片会上传但不会被渲染。 当我删除符号链接并直接将图像存储在public/images中时,我就可以看到图像,但它的用途最少,因为后期版本不会有这些图像。

我的上传者课程app/uploader/image_uploader.rb看起来像这样

class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick

  storage :file

  def default_url
    "/assets/default.gif"
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end

  def store_dir
    "images"
  end
end

我在部署脚本中使用了符号链接

    set :shared_children, shared_children + %w{public/images}

    desc "Symbolic Link for Uploads"
      task :symlink_uploads, :roles => [:app, :web] do
         run "rm -rf #{release_path}/public/images &&
              ln -nfs #{shared_path}/images  #{release_path}/public/images"
    end

    after 'deploy:update_code', 'deploy:symlink_uploads'

也尝试了设置权限。但我仍然没有看到我上传的图片。

当我尝试从浏览器访问图像时,我收到以下消息

Forbidden
You don't have permission to access /images/my_profile.jpg on this server.
Apache/2.2.14 (Ubuntu) Server at example.com Port 80

也进行了搜索 Capistrano and CarrierwaveCarrierwave files with Capistrano

我是否需要为可访问的目录设置特定权限? 例如:

chmod 755 shared_path/images

无法找到任何有效的解决方案。 非常感谢帮助。

提前致谢。

1 个答案:

答案 0 :(得分:0)

知道了,这个缺失了

Options FollowSymLinks

apache permissions error

虽然我在

下有Options -Indexes +FollowSymLinks MultiViews

<Directory></Directory>

想知道+FollowSymLinks无效的原因