naichi's lab

3日後の自分(他人)への書き置き

【CentOS7】ImageMagick/GraphicsMagick is not installed

f:id:naichilab:20160422002907p:plain

Rails + CarrierWave + MiniMagick で画像アップロードしてるんだけどStaging環境で動かしたらエラーした。

環境

  • CentOS7
  • Rails 4.2.2
  • carrierwave 0.10.0

CarrierWaveのエラーログを出力する設定

最初CarrierWaveのエラーがどのログみても出てなくてかなり困ったんだけど下記設定をすることでちゃんとエラーログが出るようになった。

  # config/initializers/carrierwave.rb
  config.ignore_integrity_errors = false
  config.ignore_processing_errors = false
  config.ignore_download_errors = false

エラー内容

フォームで画像を選んで送信したら下記エラーログが出てた。 アップロード先がOpenStackSwiftのオブジェクトストレージだからそっち関係のエラーかと思ったらその手前の画像サイズ変換でこけてたらしい。

CarrierWave::ProcessingError (Failed to manipulate with MiniMagick, maybe it is not an image? Original Error: ImageMagick/GraphicsMagick is not installed):
  app/controllers/user_settings_controller.rb:14:in `update_profile'

Original Error: ImageMagick/GraphicsMagick is not installed ふむふむ。

確認

convertってコマンドでImageMagickを使うらしい。

$ convert -version
-bash: convert: コマンドが見つかりません

確かに入ってないようだ。

手元のMacBookでやると

% convert -version                                                                                                                            [0:26:13]
Version: ImageMagick 6.9.1-0 Q16 x86_64 2015-03-22 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2015 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: DPC OpenCL
Delegates (built-in): bzlib fftw fontconfig freetype jng jpeg lcms lzma png tiff webp x xml zlib

入ってるっぽい。

ImageMagickのインストール

yum install ImageMagickで行けるみたい。

自分はAnsibleを使ってるので下記設定を追加した。

#Install ImageMagick
    - name: install ImageMagick
      yum: name={{ item }} state=latest
      with_items:
        - ImageMagick

インストールしてから確認。

$ convert -version       Version: ImageMagick 6.7.8-9 2016-03-31 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features: OpenMP

入ったっぽい。

これでRails + CarrierWave + ImageMagicも成功した !