我在 rails 应用程序中使用carrierwave 来上传文件。它在我的开发环境中运行良好,但在我的生产虚拟机(Ubuntu)上,我收到了这个错误:
在 users#update: 中发生 Errno::EACCES
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。
至少我认为这是正在发生的事情。有人对我应该如何做有任何想法吗?