访问rails app之外的文件

时间:2016-07-19 19:05:29

标签: ruby-on-rails apache

我使用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>

2 个答案:

答案 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您的时间