【问题标题】:Accessing files outside of rails app在 Rails 应用程序之外访问文件
【发布时间】:2016-07-19 19:05:29
【问题描述】:

我正在使用 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 应用程序?

感谢您的帮助

完整的虚拟目录配置:

<Directory "/home/jigger/rails/myapp/production/current/public"> allow from all Options None Require all granted </Directory>

【问题讨论】:

  • 产生 403 错误的示例 URI 路径是什么?
  • 嗨,例如:/uploads/event/image/465/square_13662250_1238352296217366_1464520080533988705_o.jpg

标签: ruby-on-rails apache


【解决方案1】:

检查您的myapp/production/shared/public/uploads 目录和carrierwave 创建的所有子目录的权限,它们至少应该是用户rwx,但根据您的设置,您可能还需要组rwx。

然后还要检查创建文件所使用的权限(这将取决于您的 umask 和/或carrierwave 的权限配置),您需要用户和组至少为文件本身的rw。

最后,您可能错误地将 apache 配置为拒绝对 /uploads 虚拟目录的读取访问。您不需要为该目录​​配置任何内容,因此如果您有任何内容,请完全删除它。

更新

由于添加了您的 apache 配置,问题很明显,您设置了 Options None,这意味着 apache 不会遵循符号链接。您需要删除该行以便它使用默认值,或显式添加默认值:

Options FollowSymlinks

【讨论】:

  • 好的。 production/shared/public$ ls -al uploads/ 给我:drwxr-xr-x 3 jigger jigger 4096 juil。 19 22:22 活动
  • 变量太多,我无法成功地将其转化为任何有意义的东西,如果您无法按照我上面的说明进行操作,请找一个可以的操作人员。
  • 抱歉,我无法正确格式化我的评论。我检查了权限,甚至强制所有共享目录对所有人都可写和可读,但没有任何改变。我将虚拟目录配置添加到我的问题中。
  • 好的,现在问题很明显了,让我修改一下答案。
  • 对不起我的英语。我是法国人:D
【解决方案2】:

找到解决方案:

在我的 apache 虚拟目录配置中,我必须通过添加指令来允许 apache 提供不在应用根目录内的文件

选项跟随符号链接。

感谢@smathy 抽出宝贵时间

【讨论】:

    猜你喜欢
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多