Redmine のサムネイル画像が Amazon S3 に格納できない件



Redmine の添付ファイルを Amazon S3 に格納する記事の続きです。前回では添付ファイルを Amazon S3 に格納するところまで行ないました。
しかし、添付画像の自動サムネイル表示の設定をしている場合は、うまく行かない場合があります。

添付ファイルのサムネイルを表示する設定

まず、Redmine で添付画像のサムネイルを表示する設定でない場合は、次の手順で設定します。

Redmine にシステム管理者でログインし、「設定」-「表示」-「添付ファイルのサムネイル画像を表示」のチェックボックスをオンにして保存します。

添付ファイルのサムネイル画像を表示する設定

添付ファイルのサムネイル画像を表示する設定


S3 のバケット内に tmp フォルダを作成する

AWS のマネージメントコンソールや s3cmd などを使って、バケット内にあらかじめ tmp フォルダを作成します。

S3 Management Console のスクリーンショット

tmp というフォルダをあらかじめ作成する


さて、これでサムネイル画像が S3 に保存されれば問題ないのですが、うまくいかずにはまるポイントがいくつかあります。

サムネイルがそもそも生成されない

添付ファイルを Amazon S3 に格納する設定にしていなくてもサムネイル画像が生成できないときは、ImageMagick または rmagick がインストールされていない可能性があります。

システムに ImageMagick がインストールされているか、Ruby の gem で rmagick がインストールされているか、確認してください。rmagick の gem をビルドするときには ImageMagick-devel パッケージも必要になります。

インストールされていなければインストールしましょう

SSL 証明書の権限の関係でうまく行かない

以下のような SSL 証明書のエラーが出て失敗していることがあります。

当初は、S3 エンドポイント側の SSL 証明書の問題かと思ったのですが、その理由は自分のサーバーでした。

サムネイル画像の保存には open-uri というライブラリを使用しているため、他の添付アップロードと振る舞いが異なっています。Ruby の open-uri が、内部的に openssl ライブラリ設定のルート CA 証明書のディレクトリを使っています。

CentOS の場合、/etc/pki/tls/certs にある ca-bundle.crt と ca-bundle.trust.crt ファイルの所有者が root でパーミッションが 600 になっていると、Passenger ユーザの権限で読めないのでエラーとなるようです。
/etc/pki/tls/cert.pem というシンボリックリンクも同様です。

のようにして解決しました。

ITエンジニア募集中!

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

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


コメントを残す

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

CAPTCHA