nginx 1.2 に cache purge モジュールを入れてインストールする方法

この記事の作業はユーザーで行なって下さい。rpmbuild は root で行うとシステムにダメージを与える可能性があるそうですので、この作業は root ではなくユーザーになって行う必要があるそうです。

nginx 1.2 のインストール

ソースからインストールします。

1
2
3
yum install gcc rpm-build perl-ExtUtils-Embed
mkdir $HOME/rpmbuild $HOME/rpmbuild/SOURCES $HOME/rpmbuild/SPECS $HOME/rpmbuild/BUILD $HOME/rpmbuild/SRPMS $HOME/rpmbuild/RPMS $HOME/rpmbuild/RPMS/x86_64
echo "%_topdir $HOME/rpmbuild" >> $HOME/.rpmmacros

以下から rpm の URL を取得してきます。

1
2
3
4
5
6
7
wget http://dl.fedoraproject.org/pub/epel/6/SRPMS/nginx-1.0.15-1.el6.src.rpm
useradd -s /sbin/nologin mockbuild
rpm -Uvh nginx-1.0.15-1.el6.src.rpm
cd ~/rpmbuild/SOURCES/
wget http://nginx.org/download/nginx-1.2.0.tar.gz
cd ~/rpmbuild/SPECS/
vi nginx.spec

nginx.spec は下記のように編集します。

まず、以下の行を上の方に追加。

1
%define _unpackaged_files_terminate_build 0

バージョン番号を変更します。

1
Version:           1.2.0

以下の行をコメントアウト。

1
#Patch0:     nginx-auto-cc-gcc.patch

以下の行をコメントアウト。

1
#%patch0 -p0

export の所に以下のように文字コードの設定を追加。

1
export LANG='ja_JP.UTF-8'

終わったら下記のようにビルドしてください。

1
rpmbuild -bb nginx.spec

するとこんなエラーが出ます。

1
2
3
4
5
6
error: Failed build dependencies:
	GeoIP-devel is needed by nginx-1.2.0-1.el6.x86_64
	gd-devel is needed by nginx-1.2.0-1.el6.x86_64
	libxslt-devel is needed by nginx-1.2.0-1.el6.x86_64
	openssl-devel is needed by nginx-1.2.0-1.el6.x86_64
	zlib-devel is needed by nginx-1.2.0-1.el6.x86_64

言われた通りにインストールします。

1
yum install GeoIP-devel gd-devel libxslt-devel openssl-devel zlib-devel

再度ビルドしたら移動してインストールします。

1
2
3
rpmbuild -bb nginx.spec
cd ~/rpmbuild/RPMS/x86_64/
rpm -Uvh nginx-1.2.0-1.el6.x86_64.rpm

とりあえずこれで nginx 1.2 が使えるようになります。

ngx_cache_purge のインストール

こちらから最新の ngx_cache_purge の URL を取得して、下記の手順で作業していきます。

1
2
3
4
cd ~/rpmbuild/SOURCES/
wget http://labs.frickle.com/files/ngx_cache_purge-1.5.tar.gz
cd ~/rpmbuild/SPECS/
vi nginx.spec

先程追加した define の下に以下の行を追加。

1
%define ngx_cache_purge_version 1.5

Source の部分に下記の行を追加する。

1
Source10:          ngx_cache_purge-%{ngx_cache_purge_version}.tar.gz

Patch0 の下らへんに下記の行を追加

1
%setup -T -D -a 10

configure らへんの所に下記の引数を追加。前の行などを見てバックスラッシュを付加したりコメントアウトを削除することを忘れずに。

1
--add-module=%{_builddir}/nginx-%{version}/ngx_cache_purge-%{ngx_cache_purge_version}

make の下にこれを入れる。

1
2
mv ngx_cache_purge-1.5/CHANGES ngx_cache_purge-1.5/CHANGES.ngx_cache_purge
mv ngx_cache_purge-1.5/README.md ngx_cache_purge-1.5/README.ngx_cache_purge

doc の所にこれを入れる。

1
%doc ngx_cache_purge-1.5/CHANGES.ngx_cache_purge ngx_cache_purge-1.5/README.ngx_cache_purge

終わったら下記の手順でビルドします。

1
2
3
4
5
rpmbuild -bb nginx.spec
cd ~/rpmbuild/RPMS/x86_64/
rpm -Uvh nginx-1.2.0-1.el6.x86_64.rpm
/sbin/chkconfig nginx on
/etc/init.d/nginx start

ちなみに新しいモジュールを入れたり、間違えた時に修正したい場合はこの手の方法で再度インストールすると思いますが、その時は以下のように一度削除します。

1
rpm -e nginx-1.2.0

すると下記のように設定ファイルはバックアップされて全て消えます。

1
2
警告: /etc/nginx/nginx.conf は /etc/nginx/nginx.conf.rpmsave として保存されました。
警告: /etc/nginx/conf.d/virtual.conf は /etc/nginx/conf.d/virtual.conf.rpmsave として保存されました。

その後さっきのようにインストールすれば良いです。

1
2
cd ~/rpmbuild/RPMS/x86_64/
rpm -Uvh nginx-1.2.0-1.el6.x86_64.rpm

コメント

コメントは受け付けていません。