背景
EC2上でyum install nginx
するとインストールされるnginxに画像リサイズ機能を付加したい。また、RPMパッケージにして後々展開しやすいようにしておきたい。
作業の概要
Amazon LinuxのyumリポジトリからSPRMを取得し、ngx_small_lightモジュールを組み込んでビルド・RPMパッケージを作成する。作業はEC2(Amazon Linux AMI 2015.09.1)上で行う。
必要なパッケージをインストール
$ sudo yum update -y
$ sudo yum groupinstall -y "Development Tools"
$ sudo yum install -y pcre-devel zlib-devel openssl-devel gd-devel
$ sudo yum install -y libunwind perl-ExtUtils-Embed gperftools gperftools-libs gperftools-devel libxslt libxslt-devel GeoIP GeoIP-devel
$ sudo yum install -y ImageMagick ImageMagick-devel
rpmbuildの作業環境準備
$ cd ~ && mkdir -p ~/rpmbuild/{SOURCES,SPECS}
$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
small_lightのセットアップ
(詳細は https://github.com/cubicdaiya/ngx_small_light )
$ git clone -b v0.6.11 git@github.com:cubicdaiya/ngx_small_light.git /var/tmp/ngx_small_light
$ cd /var/tmp/ngx_small_light
$ ./setup
$ cd ~/
nginxのSRPMを取得・編集
$ sudo yum install -y nginx
$ get_reference_source -p nginx
$ rpm -ivh /usr/src/srpm/debug/nginx-1.8.0-10.25.amzn1.src.rpm
specファイルを編集
$ vim ~/rpmbuild/SPECS/nginx.spec
...
./configure \
--add-module=%{_tmppath}/ngx_small_light \ # <= 追加
--prefix=%{nginx_datadir} \
--sbin-path=%{_sbindir}/nginx \
...
ビルド・パッケージング
$ rpmbuild -ba ~/rpmbuild/SPECS/nginx.spec
$ ls ~/rpmbuild/RPMS/x86_64/nginx-1.8.0-10.25.amzn1.x86_64.rpm