ImageMagick + 画像サムネイル作成 Apache モジュール SMALL LIGHT をインストール

notoです。 cookpadの「tofu」のような画像キャッシュサーバを作る機会があるとかないとか言われているので、small_light でも検証してみようとインストールしてみました。

構成は、Short-term Edge Cache (フロントサーバでの一時キャッシュ) + Apache(small_light) を想定しています。

環境

  • CentOS 6.2 (64bit)
  • Apache 2.2.15
  • ImageMagick 6.7.6
  • small_light 1.1.1

ImageMagickのインストール

yumでインストールできるバージョンが古い & ImageMagickはリリース頻度が高い為、rpmbuildしてインストールします。

rpmbuild用のユーザー作成

rootで rpmbuildを行うとシステムにダメージ与える可能性がある為、専用のユーザーを作成します。 rpmbuild がインストールされていない場合は、yum でインストールして下さい。

1

useradd rpmbuilder

rpmbuild 環境の準備

rpmbuild用のユーザーにスイッチ

1

su rpmbuilder

作業ディレクトリの作成

1

2

mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros

ImageMagickのsrc.rpmをダウンロード

1

2

wget http://www.imagemagick.org/download/linux/SRPMS/ImageMagick-6.7.6-9.src.rpm

rpm -Uvh ImageMagick-6.7.6-9.src.rpm

src.rpmは以下のURLで確認してください。

http://www.imagemagick.org/download/linux/SRPMS/

specファイルの編集

ImageMagickのパフォーマンス低下防止の為、openmpを無効化します。 また、openmpを有効化すると small_light の makeでこけます。

1

2

3

4

5

6

7

cd ~/rpm/SPECS/

vi ImageMagick.spec

155行目あたり

%configure --enable-shared \

  --disable-static \

  --disable-openmp \  ← 追加

  ~ 中略 ~

rpmbuild

ビルド依存性の失敗することは分かっていますがビルドします。

1

rpmbuild -bb ImageMagick.spec

はいはい。ビルド依存性の失敗。ビルド依存性の失敗。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

エラー: ビルド依存性の失敗:

  bzip2-devel は ImageMagick-6.7.6-9.x86_64 に必要とされています

  libtiff-devel は ImageMagick-6.7.6-9.x86_64 に必要とされています

  giflib-devel は ImageMagick-6.7.6-9.x86_64 に必要とされています

  ghostscript-devel は ImageMagick-6.7.6-9.x86_64 に必要とされています

  djvulibre-devel は ImageMagick-6.7.6-9.x86_64 に必要とされています

  libwmf-devel は ImageMagick-6.7.6-9.x86_64 に必要とされています

  jasper-devel は ImageMagick-6.7.6-9.x86_64 に必要とされています

  libtool-ltdl-devel は ImageMagick-6.7.6-9.x86_64 に必要とされています

  libXext-devel は ImageMagick-6.7.6-9.x86_64 に必要とされています

  libXt-devel は ImageMagick-6.7.6-9.x86_64 に必要とされています

  lcms-devel は ImageMagick-6.7.6-9.x86_64 に必要とされています

  librsvg2-devel は ImageMagick-6.7.6-9.x86_64 に必要とされています

  OpenEXR-devel は ImageMagick-6.7.6-9.x86_64 に必要とされています

依存パッケージのインストール

必要なパッケージをインストールします。 djvulibre-devel のみ標準リポジトリではインストールできない為、rpmforgeを利用しています。

1

sudo yum install --enablerepo=rpmforge bzip2-devel freetype-devel libtiff-devel giflib-devel perl ghostscript-devel libwmf-devel libtool-ltdl-devel libX11-devel libXext-devel libXt-devel lcms-devel librsvg2-devel jasper-devel OpenEXR-devel djvulibre-devel

再度rpmbuild

1

rpmbuild -bb ImageMagick.spec

インストール

出来上がったrpmファイルをインストールします。

1

2

cd ../RPMS/x86_64/

sudo rpm -Uvh  ImageMagick-6.7.6-9.x86_64.rpm  ImageMagick-c++-6.7.6-9.x86_64.rpm ImageMagick-devel-6.7.6-9.x86_64.rpm ImageMagick-c++-devel-6.7.6-9.x86_64.rpm ImageMagick-djvu-6.7.6-9.x86_64.rpm ImageMagick-doc-6.7.6-9.x86_64.rpm ImageMagick-perl-6.7.6-9.x86_64.rpm

確認

1

2

3

4

convert --version

Version: ImageMagick 6.7.6-9 2012-05-18 Q16 http://www.imagemagick.org

Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC

Features:

SMALL LIGHTのインストール

small_light は、少し前に話題になったCookPadの のようなパラメータを指定することで画像を動的にリサイズとかしてくれるモジュールです。元?livedoor ラボ「EDGE」がオープンソースとしてGoogleCode上で公開しています。 は ドキュメントにそって行えば大抵は問題ないはずです。

依存パッケージのインストール

1

yum install --enablerepo=remi,epel httpd-devel imlib2-devel

libjpeg tarboのインストール

遅いより速いほうがいい!ということで libjpeg tarbo をインストールします。

1

2

wget http://sourceforge.net/projects/libjpeg-turbo/files/1.2.0/libjpeg-turbo-1.2.0.x86_64.rpm/download

rpm -Uvh libjpeg-turbo-1.2.0.x86_64.rpm

ソースからいれたい方は以下のURLからダウンロードしてください。

http://sourceforge.net/projects/libjpeg-turbo/files/

libjpegの確認

1

ldd /usr/lib64/libMagick*|grep jpeg

libjpeg tarbo への切り替え

1

2

echo /opt/libjpeg-turbo/lib64/ > /etc/ld.so.conf.d/libjpeg-turbo.conf

ldconfig

libjpegの確認

1

2

3

4

5

6

7

8

9

10

11

ldd /usr/lib64/libMagick*|grep jpeg



libjpeg.so.62 => /opt/libjpeg-turbo/lib64/libjpeg.so.62 (0x00007fa23d141000)

libjpeg.so.62 => /opt/libjpeg-turbo/lib64/libjpeg.so.62 (0x00007f0f99e9f000)

libjpeg.so.62 => /opt/libjpeg-turbo/lib64/libjpeg.so.62 (0x00007f71e69cc000)

libjpeg.so.62 => /opt/libjpeg-turbo/lib64/libjpeg.so.62 (0x00007facbdf95000)

libjpeg.so.62 => /opt/libjpeg-turbo/lib64/libjpeg.so.62 (0x00007ff7c823f000)

libjpeg.so.62 => /opt/libjpeg-turbo/lib64/libjpeg.so.62 (0x00007fa045bbd000)

libjpeg.so.62 => /opt/libjpeg-turbo/lib64/libjpeg.so.62 (0x00007fd0af276000)

libjpeg.so.62 => /opt/libjpeg-turbo/lib64/libjpeg.so.62 (0x00007fe7e5a21000)

libjpeg.so.62 => /opt/libjpeg-turbo/lib64/libjpeg.so.62 (0x00007f09969b0000)

SMALL LIGHTのインストール

1

2

3

4

5

6

7

cd /usr/local/src

wget http://smalllight.googlecode.com/files/mod_small_light-1.1.1.tar.gz

tar zxf mod_small_light-1.1.1.tar.gz

cd mod_small_light-1.1.1

./configure --with-apxs=/usr/sbin/apxs

make

make install

makeで失敗する場合

ボクの場合は一度 make で失敗しました。 現象は Apacheの動的画像リサイズモジュール「smalllight」のmakeが通らなかったのを直してみた。 と同じだと思います。

1

2

3

4

5

6

7

8

9

10

11

/usr/sbin/apxs -c -DENABLE_IMLIB2 -DENABLE_WAND -DENABLE_JPEG -ljpeg `/usr/bin/imlib2-config --cflags` `/usr/bin/imlib2-config --libs` `/usr/bin/Wand-config --cppflags` `/usr/bin/Wand-config --libs` \

        mod_small_light.c mod_small_light_*.c

apxs:Error: Unknown option: f.

Usage: apxs -g [-S <var>=] -n

       apxs -q [-S <var>=]  ...

       apxs -c [-S <var>=] [-o ] [-D [=]]

               [-I ] [-L ] [-l ] [-Wc,]

               [-Wl,] [-p]  ...

       apxs -i [-S <var>=] [-a] [-A] [-n ]  ...

       apxs -e [-S <var>=] [-a] [-A] [-n ]  ...

make: *** [all] エラー 1

上記エラーが出力されたら、ImageMagickのopenmpが有効になっていないか確認して下さい。 きっと有効になっているので無効化後、small_lightのインストールを行って下さい。

パーミッションの変更

1

chmod 755 /usr/lib64/httpd/modules/mod_small_light.so

確認

1

httpd -M

small_light_module (shared) が出力されていることを確認できたら無事完了です。 使い方はに記載されているのでそちらを見たほうが早いと思います。

参考

Comments