0

我有一个 Rails 3 应用程序,它有一个附件模型并使用 Paperclip gem。在开发环境中一切正常,但在生产服务器上,我们无法访问任何上传的图像。这些图像位于它们应该在的正确文件夹中,但是当我尝试在浏览器上访问它们时,我只是得到了 404 页面。

上传文件夹位于公用文件夹下,称为“上传”

我可以访问这个:我手动创建的“app_url/uploads/test.html”以查看它是否有效

但我无法访问这个:“app_url/uploads/test.jpg”,我通过回形针在应用程序中上传。

我猜这与服务器配置有关,但我不是专家,可能需要帮助。

谢谢

更新

我刚刚意识到上传的文件属于“nobody”,当我手动将所有者更改为“root”时,它似乎工作正常。所以我需要找到一种方法来告诉 Paperclip 使文件属于“root”

4

1 回答 1

0

让 Web 应用程序能够以 root 身份写入文件并不是一个好主意。文件权限源自写入文件的进程。如果您使用Passenger,则有用户切换的概念:

http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerDefaultUser

在您的应用程序启动时,Passenger 会尝试找出哪些用户拥有这些文件,并尝试将其应用程序进程切换到该用户。如果失败,“nobody”是默认值。

检查文件级别的应用程序权限。您的服务器上的每个应用程序都应该有一个用户帐户。应用程序(公共目录上方的目录和内容)应归该用户所有。public 下的文件应该可以被其他人读取,所以 webserver 也可以获取它们。

您是否使用 Capistrano 进行部署?

于 2013-05-23T12:30:45.390 回答