使用Ruby on Rails处理Paperclip文件夹和文件权限

Bac*_*cko 6 ruby ubuntu ruby-on-rails paperclip ruby-on-rails-3

我在运行Ubuntu 10.04 LTS的远程VPS机器上以生产模式运行Ruby on Rails 3.0.9(在开发模式下我在MAC OS Snow Leopard上使用RoR),我想知道如何管理以下场景.

我使用Apache2Phusion Passenger,我已经将Virtual Host设置为:

<VirtualHost *:80>
  ServerName project_name.com
  DocumentRoot /srv/www/project_name.com/public

  <Directory /srv/www/project_name.com/public>
    AllowOverride all
    Options -MultiViews
  </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

更多,我使用Paperclip gem,并且,作为很多人在网络上使用它在生产模式下,我在处理(图像)文件时收到以下错误:

Errno::EACCES (Permission denied - /srv/www/project_name.com/public/images/001):
...
Run Code Online (Sandbox Code Playgroud)

我听说为了避免这些错误的解决方案是设置正确的文件夹权限(手动! - 我不知道是否可以自动化"设置"过程......顺便说一下:是否可能?)但是我认为有更好的方法来解决这个问题.如果是这样,我该怎么办?

ric*_*cho 2

@M。Cypher 很接近,尽管我看到的最大问题是允许用户上传任意文件,然后将它们标记为可执行文件。这是一场寻找发生地点的灾难。

find /srv/www/project_name.com/public -type d -exec chmod 755 {}\;
find /srv/www/project_name.com/public -type f -exec chmod 644 {}\;
Run Code Online (Sandbox Code Playgroud)

这将在目录上设置可执行文件(必要),但不会在文件上设置可执行文件。