Railsアプリでcarrierwaveを使用してファイルをアップロードしています。開発環境では問題なく動作しますが、実稼働 VM (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 でき、それは機能します...しかし、別の展開では、所有者がデフォルトでルートに設定された別の新しいディレクトリが作成されます。
少なくとも私はこれが起こっていると思います。私がこれをどのように行うべきかについて誰か考えがありますか?