Rrailでアプリを作りAWSの本番環境でデプロイが完了し、動作確認で画像を投稿しようとしたら以下のエラーが出ました。
Permission denied @ rb_sysopen - /var/www/rails/app/tmp/uploads/cache/xxxxxx
権限周りでエラーが起こっているらしいです。
調べたところこちらの記事が参考になりました。
私の場合EC2にSSHログインし、対象フォルダまで移動、権限の変更で解決できました。
(usernameは適宜変更して下さい。 "whoami" というコマンドで確認できます)
$ ssh app_name_key_rsa
$ cd /var/www/rails/app/tmp/uploads/cache
$ ls -la
drwxr-xr-x 2 root root 6 8月 14 00:44 .
drwxr-xr-x 4 root root 32 8月 14 00:44 ..
$ sudo chown -R username .
$ ls -la
drwxr-xr-x 2 username root 6 8月 14 00:44 .
drwxr-xr-x 4 root root 32 8月 14 00:44 ..
変更後に再デプロイしたのですが次はこちらのエラーが出ました。
Permission denied @ rb_sysopen - /var/www/rails/app/tmp/uploads/store/xxxxxx
こちらも上記と同様のコマンドで権限を変更します。内容は殆ど一緒のため割愛します。
同様に権限変更後に再デプロイして確認すると無事に画像の投稿ができるようになっていました。
また、今回のエラー時にトップページで表示されるはずの画像(CSSでバックグラウンドイメージに指定していた)が表示されていませんでした。こちらは別階層にあるcacheファイルを権限変更すれば解決できました。
$ ssh app_name_key_rsa
$ cd /var/www/rails/app/tmp
$ ls -la
:
drwxr-xr-x 3 root root 20 8月 14 23:40 cache
:
$ sudo chown -R username cache
$ ls -la
:
drwxr-xr-x 3 username root 20 8月 14 23:40 cache
:
以上、どのたかのお力になれたら幸いです。