我在softlayer VPS上设置了carrierwave。 Carrierwave提供了将文件保存在本地存储中的选项。
如果我使用符号链接public/images
到shared_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 Carrierwave, Carrierwave files with Capistrano
我是否需要为可访问的目录设置特定权限? 例如:
chmod 755 shared_path/images
无法找到任何有效的解决方案。 非常感谢帮助。
提前致谢。
答案 0 :(得分:0)
知道了,这个缺失了
Options FollowSymLinks
虽然我在
下有Options -Indexes +FollowSymLinks MultiViews
<Directory></Directory>
想知道+FollowSymLinks
无效的原因