Rails 3 + carrierwave + nginx = 权限被拒绝

5

我已经使用rmagick安装了carrierwave宝石。

如果通过WEBrick加载,我可以很好地使用它,但是在尝试使用nginx时却出现500内部服务器错误。

nginx error.log的错误信息如下:

2011/08/14 10:06:40 [crit] 760#0: *4247 open() "/usr/local/Cellar/nginx/1.0.4/client_body_temp/0000000033" failed (13: Permission denied), client: 127.0.0.1, server: jewellery.dev, request: "POST /items/28?locale=en HTTP/1.1", host: "jewellery.dev:8080", referrer: "http://jewellery.dev:8080/items/28/edit?locale=en"

我已经在initializers文件夹中创建了一个文件,包含以下内容:

CarrierWave.configure do |config|
  config.permissions = 0777
end

我有所遗漏吗?

1个回答

9
这与CarrierWave无关,Nginx无法在文件夹/usr/local/Cellar/nginx/1.0.4/client_body_temp/中写入临时上传的文件,这意味着您的Nginx进程没有权利访问它。请确保运行nginx的用户可以在此特定路径下读写文件,如果您没有更改配置,则Nginx通常将其工作进程启动为用户nobody,因此您可能需要给该用户读写此文件夹的权限。
请运行以下命令:
ps aux | grep "nginx: worker process"

查看正在运行nginx的用户。


1
没错。谢谢Maurício!你这次又帮了我两次!我只需要运行 chown <myuser>:<group> /usr/local/Cellar/nginx/1.0.4/client_body_temp/ 就可以了,现在它正常工作了! :) - Kleber S.
在较新版本的nginx中,该文件夹可能是**/var/lib/nginx/body**。 - Clark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接