Redmine の添付ファイルを Amazon S3 に格納する



チケットベースのプロジェクト管理システムの Redmine は便利ですが、長年使っていると添付ファイルが増えていきますよね。ファイルが増えすぎたのでサーバの移転をして Redmine 本体のセットアップからやり直すのは面倒です。そこで S3 plugin for Redmine を使って Redmine 本体は移動せず、添付ファイルのフォルダだけを Amazon S3 に移せるようなので試してみました。

Redmine S3 プラグインの導入

まず S3 プラグインを github から導入します。

s3.yml はいまはコピーだけしておいて、中身は AWS の作業後に設定します。

S3 バケットの作成と IAM の設定

次に AWS のS3コンソールから s3 のバケットを作成します。バケットの下には files というディレクトリを作っておきます。

S3 へのアクセスに認証をかけるために、IAM でアクセスキー(アクセスキーIDとシークレットアクセスキー)を取得します。awsのs3を操作する為のaccess keyとsecret keyを取得する(IAM)という記事が参考になりますので詳細はそちらで。

つぎにここで作成した IAM ユーザが S3 バケットにアクセスできるように権限を持たせます。IAM のユーザー画面からポリシーをアタッチします。

IAM のポリシー設定
S3 の権限は IAM ユーザーを作成してポリシー設定をします。

添付ファイルデータの S3 への転送

さて、S3 プラグインを使うと過去のチケットの添付ファイルも S3 を参照するようになります。そのため、これまでのファイルも先だって S3 バケットに転送しておく必要があります。

今回は s3cmd を使うことにしました。ダウンロード・インストールします。

s3cmd の設定をします。your_bucket_name は自分のバケット名に読み替えてください。

s3cmd で転送を実行します。少し時間がかかります。

s3.yml の設定

プラグインの設定に戻ります。s3.yml にさきほど作成した IAM のアクセスキーIDとシークレットアクセスキーを転記します。

bundle install を実行して必要な gem をインストールします。

Rails を再起動します。Passenger を利用している場合は以下のコマンドですが環境により異なります。

これで、Redmine の添付ファイルのアップロード・ダウンロードができるようになります。

その他

Redmine 本体は EC2 上にある必要はありません。現在のサーバが VPS であってもそのままで問題ありません。

今回の記事の方法だけだと、添付画像の自動サムネイル表示に問題があることがわかりましたので、対処方法は別の記事で解説します。

ITエンジニア募集中!

キュアコード株式会社はITエンジニアを募集しております。少人数の職場なので、上流・下流やサーバー・クライアント対応の垣根なく、あなたの強みを活かしながら いろいろなことにチャレンジ可能です。エンジニアとしての未経験の方、経験が少ない方も歓迎しています。

下記よりITエンジニア募集の採用情報をご覧いただけます。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA