Ruby on rails 3 轨道/回形针-罐和x27;看不到上传的图片

Ruby on rails 3 轨道/回形针-罐和x27;看不到上传的图片,ruby-on-rails-3,paperclip,Ruby On Rails 3,Paperclip,我有一个Rails 3应用程序,它有一个附件模型并使用回形针。在开发环境中一切正常,但在生产服务器上,我们无法访问上传的任何图像。这些图像在正确的文件夹中,它们应该在那里,但当我试图在浏览器上找到它们时,我只得到404页面 上载文件夹位于公用文件夹下,称为“上载” 我可以访问我手动创建的“app_url/uploads/test.html”,看看它是否有效 但我无法访问这个:“app_url/uploads/test.jpg”,我通过回形针在应用程序中上传它 我猜这与服务器配置有关,但我不是专家

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

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

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

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

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

谢谢

更新


我刚刚意识到上传的文件属于“无人”,当我手动将所有者更改为“root”时,它似乎工作正常。因此,我需要找到一种方法来告诉回形针,让文件属于“root”

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

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

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


您是否使用Capistrano进行部署?

请添加代码示例我刚刚意识到上传的文件属于“无人”,当我手动将所有者更改为“root”时,它似乎工作正常。所以我需要找到一种方法来告诉曲别针,让这些文件属于“root”,你的Rails应用服务器运行的是哪个用户?您的web服务器作为哪个用户运行?为什么您试图通过root用户而不是有效的非特权用户访问文件?egrep-w--color=auto'^user | ^Group'/usr/local/apache/conf/httpd.conf返回user nobody Group nobody默认情况下,上载的图像属于“nobody”用户,但如果我将它们发送到root,它们会抛出404,它们可以在browser.config.ru&environment.rb中看到,它们是root所有的,我让它们不属于任何人,然后重新启动apache和我的应用程序,尝试上载文件,成功了,上载的文件与以前一样不属于任何人,除非我手动选择它们属于root,否则仍然无法在浏览器上看到它们。我没有使用Capistrano。您的文件和目录不应属于root用户,而应属于非特权用户。正如我所写的,乘客从拥有
config.ru
(对于机架应用程序)或
config/environment.rb
(对于Rails应用程序)的用户处获取应用程序进程的用户。