SMALL LIGHT(スモールライト)で簡単サムネイル作成 - インストール編 -

Webサイトにおけるサムネイル画像とSMALL LIGHTについて

Webサイトでサムネイル画像が必要になるというのは多い.
アップロード時にResize作るか~とか,なんだとかかんだとか,運用まで考えてみると,意外とメンドクサイ問題であったりする.
そして,仕様変更でResize画像サイズ変更ね,とか.結構死ねる.

SMALL LIGHT(スモールライト)は,そんなサムネイル画像の作成や管理を良い感じにやってくれるlivedoor ラボ「EDGE」製のApacheモジュール.
原理は単純で,Apache上でmod_small_lightというモジュールを展開しておいて,こいつがImageMagickやimlib2といった画像変換ソフトウェアのラッパーとして動いてくれるというわけです.

f:id:mathtti:20121001214239j:plain

ためしてみるとわかるけど,お手軽だし,かなり便利.

livedoorなどの大規模サイトでも利用されているようで,実績があるというのもまた魅力的っすね.

以上が前置きでして..

インストールや実運用に発展させるためのキャッシュ戦略とか,気持ちが続く限り書く.

1.SMALL LIGHT(スモールライト)で簡単サムネイル作成 - インストール編 - (いまここ)
2.SMALL LIGHT(スモールライト)で簡単サムネイル作成 - 性能検証編 - (そのうち書く)
3.SMALL LIGHT(スモールライト)で簡単サムネイル作成 - キャッシュ戦略編 - (そのうち書く)

インストール

検証環境

さくらのVPS
CentOS release 6.3 (Final) 64bit

検証時のソフトウェアバージョン

Apache
Server version: Apache/2.2.15 (Unix)

ImageMagick
6.7.6 Q16

imlib2
1.4.4

SMALL LIGHTのインストール

本丸.

[user1@ns1 ~] $ cd /usr/local/src
# ダウンロード
[user1@ns1 /usr/local/src] $ wget http://smalllight.googlecode.com/files/mod_small_light-1.1.1.tar.gz
[user1@ns1 /usr/local/src] $ tar zxf mod_small_light-1.1.1.tar.gz
[user1@ns1 /usr/local/src] $ cd mod_small_light-1.1.1
# ImageMagickとimlib2を利用するようにconfigure
[user1@ns1 /usr/local/src] $ ./configure --with-apxs=[apxsのパス] --with-imlib2-config=[imlib2-configのパス] --with-Wand-config=[Wand-configのパス]
[user1@ns1 /usr/local/src] $ make
[user1@ns1 /usr/local/src] $ sudo make install

※ makeが上手くできない場合は,以下のページを参考にするといいかもしれません.
Apacheの動的画像リサイズモジュール「smalllight」のmakeが通らなかったのを直してみた。 - コロタエンヂニアリング

Apacheの設定

make installすると勝手にhttpd.confに書き込まれるぽいですが,以下のモジュールがLoadModuleで読み込まれている必要があります.

LoadModule small_light_module /path/to/hoge/mod_small_light.so

そして,mod_rewirteでURL設計をして,上手くSMALL LIGHTのfilterを通してあげるようにします.

例)small_lightで始まるURLのものは,変換対象とする(VirtualHost設定の中とかに書く)

RewriteRule ^/small_light[^/]*/(.+)$ /path/to/img/$1
<LocationMatch ^/small_light[^/]*/>
  SetOutputFilter SMALL_LIGHT
</LocationMatch>

公式サイトの解説がかなり詳しいので,出来ればそこを一回読んだ方がよいと思います.

ここまで出来ていれば,あとは実際に動かしてみましょう.

動作検証

/path/to/img に画像置いてある前提です.

http://[URL]/img/hoge.jpeg
→オリジナルの画像が表示される
http://[URL]/small_light(dw=400,dh=400,ds=s, e=imagemagick)/hoge.jpeg
ImageMagickで変換した画像が表示される
http://[URL]/small_light(dw=400,dh=400,ds=s, e=imlib2)/hoge.jpeg
→imlib2で変換した画像が表示される

うーん,お手軽っ.

すーぱーお手軽負荷検証

負荷検証はまた別エントリしますが,すーぱーお手軽な感じで[F5]連打時の変換コストをvmstatでモニタリング.1200×800のjpeg画像でやっております.

注目は,[memory]の[free]と[cpu]の[us]数値.

ImageMagick(cpuめちゃ上がる)

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0    384 579748 108548 188360    0    0     0     0  206   32  7  1 93  0  0
 9  0    384 463788 108548 188360    0    0     0     0 2290  577 72 16  3  0 10
11  0    384 410296 108548 188360    0    0     0     0 2367  686 91  9  0  0  1
15  0    384 364792 108548 188364    0    0     0     0 2214  690 88 12  0  0  0
23  0    384 309648 108548 188364    0    0     0     0 2071  689 85 14  0  0  0
27  0    384 201984 108548 188368    0    0     0     0 2043  695 82 18  0  0  0
 0  0    384 530184 108556 188368    0    0     0    16 2017  654 89  7  5  0  0

imlib2(うわっ……私の負荷、低すぎ……?)

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0    384 481396 108636 188396    0    0     0     0   48   22  0  0 100  0  0
 1  0    384 481272 108636 188812    0    0     0     0  795   89 16  2 80  0  2
 1  0    384 481272 108636 188704    0    0     0     0 1113  106 23  3 72  0  2
 1  0    384 481272 108636 188764    0    0     0     0 1357  122 30  4 64  0  1
 1  0    384 481148 108636 188712    0    0     0     0 1268  118 26  4 65  0  5
 0  0    384 481148 108636 188416    0    0     0     0 1329  121 28  4 66  0  2

imlib2マンセーと言いたくなりますが,こやつがgifに対応していない罠があります.

今回はこのへんで!