【发布时间】:2013-06-16 14:56:36
【问题描述】:
我在 rails 应用程序中使用carrierwave 来上传文件。它在我的开发环境中运行良好,但在我的生产虚拟机(Ubuntu)上,我收到了这个错误:
一个 Errno::EACCES 发生在 users#update:
Permission denied - /home/yards/apps/yardsapp/releases/20130616143623/public/uploads/tmp/20130616-1438-14186-3184
/usr/local/lib/ruby/1.9.1/fileutils.rb:244:in `mkdir'
我很确定我明白发生了什么,但我似乎无法找到解决办法。我的 capistrano deploy.rb 设置为 root 用户。因此,当它在部署时创建新的发布文件夹时,访问权限是 root(我认为)。
然后,当我尝试上传文件时,我收到该错误,因为 nginx 正在尝试将 mkdir 作为 www-data 执行。
我可以在部署后 chown 文件夹并且它可以工作...但随后另一个部署会创建另一个新目录,默认所有者设置为 root。
至少我认为这是正在发生的事情。有人对我应该如何做有任何想法吗?
【问题讨论】:
标签: ruby-on-rails git nginx capistrano carrierwave