Help us understand the problem. What is going on with this article?

bitnamiのRedmineでファイルアップロードするとInternal Server Errorが発生

More than 1 year has passed since last update.

前提状況

AWS EC2で個別に立てていたRedmineサーバーをLightsailへ移行した。
移行した時のファイルは表示されていたが、Wikiでファイルアップロードした時にInternal Server Errorが発生。

環境情報

  • AWS LightsailのBitnami製Redmine
  • Redmine 4.0.3.stable
  • Ruby 2.5.5-p157
  • Rails 5.2.2.1

エラー関連

エラーログの場所

/home/bitnami/apps/redmine/htdocs/log/production.log

エラー内容

Saving attachment '/opt/bitnami/apps/redmine/htdocs/files/2019/07/1907300123225_dada222e5919600905458212341.pptx' (116098 bytes)
Completed 500 Internal Server Error in 11ms (ActiveRecord: 4.0ms)

Errno::EACCES (Permission denied @ rb_sysopen - /opt/bitnami/apps/redmine/htdocs/files/2019/07/1907300123225_dada222e5919600905458212341.pptx):

app/models/attachment.rb:120:in `initialize'
app/models/attachment.rb:120:in `open'
app/models/attachment.rb:120:in `files_to_final_location'
app/controllers/attachments_controller.rb:105:in `upload'
lib/redmine/sudo_mode.rb:63:in `sudo_mode'

Internal Server Errorの原因は権限がないのが原因と判明。
では適切な権限とは・・・??

検証方法

確認方法としては移行したfilesディレクトリを一旦別名で退避させて、画面上でファイルをアップロードすると新規でfilesディレクトリが作成される。その時に作成されたディレクトリと同じ権限/ユーザー/グループを適切に設定してあげれば問題なし。という判断ができる。

今回の場合は権限ではなくディレクトリのユーザーとグループが違うことが原因である。

対応

Redmineのfilesを移行した時にredmineディレクトリと同様のユーザー:bitnamiグループ: bitnamiで作成されている。しかし、ファイルアップロードするユーザーorグループはdaemonであるため変更する必要がある。必要であれば775(drwxrwxr-x)権限に変更する。

sudo chown -R daemon:daemon /opt/bitnami/apps/redmine/htdocs/files
sudo chmod -R 775 /opt/bitnami/apps/redmine/htdocs/files

これでファイルアップロードができる!!!

tu-kun
「仲間をサポートして次のステップへのキッカケを与える」を自身のミッションとしてスタートアップCTOで活動中。 技術ではAWS設計/構築、Vue.js, Nuxt.js, Python, Ruby, Javaなど幅広く携わる。 他、ペルソナ構想〜MVP検証、顧客インタビュー、そして論理的に考え現実主義のため、チーム内の意見を現実可能なラインまで落とし込むのが得意。今はXRに興味あり
from-to
ふるさと開拓サービス「flato」の開発・運用をしています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away