我使用mina(https://github.com/mina-deploy/mina)作为我的rails应用的部署工具。 我使用Carrierwave gem处理我的应用程序内的上传。
上传目录通过部署共享,并复制到myapp / production / shared / public / uploads。
Mina创建了一个符号链接,从myapp / public / uploads到myapp / production / shared / public / uploads存储文件。
当我将文件附加到我的模型时,它会被核心保存,但在尝试显示时,我会收到403错误。
在apache中,我的应用程序配置为从
<Directory "/home/jigger/rails/myapp/production/current/public">
这个问题来自这里吗? 如何访问myapp / shared / public / uploads目录到apache / my rails app?
感谢您的帮助
完整的虚拟目录配置:
<Directory "/home/jigger/rails/myapp/production/current/public">
allow from all
Options None
Require all granted
</Directory>
答案 0 :(得分:1)
检查您的myapp/production/shared/public/uploads
目录以及carrierwave正在创建的所有子目录的权限,它们至少应为用户rwx
,但根据您的设置,您可能还需要群组rwx
。
然后还要检查创建文件的权限(这取决于你对webwave的umask和/或权限配置),你需要用户和组可能至少为文件本身rw
最后,您可能错误配置了apache以拒绝该/uploads
虚拟目录上的读取访问权限。您不需要为该目录配置任何内容,因此如果您有任何内容,请将其完全删除。
由于添加你的apache配置问题很明显,你设置Options None
这意味着apache不会遵循符号链接。您需要删除该行以使其使用默认值,或者明确添加默认值:
Options FollowSymlinks
答案 1 :(得分:0)
找到解决方案:
在我的apache虚拟目录配置中,我必须允许apache通过添加指令来提供不在app根目录下的文件
选项FollowSymlinks。
感谢@smathy您的时间