Redmine のサムネイル画像が Amazon S3 に格納できない件
Redmine の添付ファイルを Amazon S3 に格納する記事の続きです。前回では添付ファイルを Amazon S3 に格納するところまで行ないました。
しかし、添付画像の自動サムネイル表示の設定をしている場合は、うまく行かない場合があります。
添付ファイルのサムネイルを表示する設定
まず、Redmine で添付画像のサムネイルを表示する設定でない場合は、次の手順で設定します。
Redmine にシステム管理者でログインし、「設定」-「表示」-「添付ファイルのサムネイル画像を表示」のチェックボックスをオンにして保存します。
S3 のバケット内に tmp フォルダを作成する
AWS のマネージメントコンソールや s3cmd などを使って、バケット内にあらかじめ tmp フォルダを作成します。
さて、これでサムネイル画像が S3 に保存されれば問題ないのですが、うまくいかずにはまるポイントがいくつかあります。
サムネイルがそもそも生成されない
添付ファイルを Amazon S3 に格納する設定にしていなくてもサムネイル画像が生成できないときは、ImageMagick または rmagick がインストールされていない可能性があります。
1 2 3 4 5 |
$ yum list ImageMagick* ... インストール済みパッケージ ImageMagick.x86_64 6.7.2.7-2.el6 @base ImageMagick-devel.x86_64 6.7.2.7-2.el6 @base |
システムに ImageMagick がインストールされているか、Ruby の gem で rmagick がインストールされているか、確認してください。rmagick の gem をビルドするときには ImageMagick-devel パッケージも必要になります。
1 2 3 4 |
$ gem list rmagick *** LOCAL GEMS *** rmagick (2.13.4) |
インストールされていなければインストールしましょう
SSL 証明書の権限の関係でうまく行かない
以下のような SSL 証明書のエラーが出て失敗していることがあります。
1 2 3 |
An error occured while generating thumbnail for 2016/04/hohgehoge.jpg to 1832_d41d8cd94e809098f00b20ecf842798e_100.thumb Exception was: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed Filter chain halted as :find_thumbnail_attachment_s3 rendered or redirected |
当初は、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 というシンボリックリンクも同様です。
1 |
chmod og+r /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-bundle.trust.crt /etc/pki/tls/cert.pem |
のようにして解決しました。
ITエンジニア募集中!
キュアコード株式会社はITエンジニアを募集しております。少人数の職場なので、上流・下流やサーバー・クライアント対応の垣根なく、あなたの強みを活かしながら いろいろなことにチャレンジ可能です。エンジニアとしての未経験の方、経験が少ない方も歓迎しています。
下記よりITエンジニア募集の採用情報をご覧いただけます。