nginx_cache を有効にして nginx をビルド&インストール

EPEL パッケージリポジトリをインストール

[paraches@localhost myTest]$ wget http://ftp.riken.jp/Linux/fedora/epel/5/i386/epel-release-5-4.noarch.rpm
[paraches@localhost myTest]$ sudo rpm -Uvh epel-release-5-4.noarch.rpm

nginx に必要なパッケージを yum でインストール

[paraches@localhost myTest]$ sudo  yum --enablerepo=epel install rpm-build spawn-fcgi pcre-devel zlib-devel openssl-devel

たくさんインストールされた!


nginx のソースパッケージをダウンロード

[paraches@localhost myTest]$ wget http://download.fedora.redhat.com/pub/epel/5/SRPMS/nginx-0.8.55-1.el5.src.rpm

SRPM のインストール
nginx.conf は /usr/src/redhat/SPEC に、ソースファイルは /usr/src/redhat/SOURCES に展開される。

[paraches@localhost myTest]$ sudo rpm -ivh nginx-0.8.55-1.el5.src.rpm 

盛大なワーニングは無視!


最新の nginx と Cache Purge plugin をダウンロード
現時点での最新は nginx-1.1.9 と ngx_cache_purge-1.5。

[paraches@localhost myTest]$ cd /usr/src/redhat/SOURCES/
[paraches@localhost SOURCES]$ sudo wget http://nginx.org/download/nginx-1.1.9.tar.gz
[paraches@localhost SOURCES]$ sudo wget http://labs.frickle.com/files/ngx_cache_purge-1.5.tar.gz

/usr/src/redhat/SPEC/nginx.spec を nginx.spec.org にして退避。

[paraches@localhost SOURCES]$ cd ../SPECS/
[paraches@localhost SPECS]$ sudo mv nginx.spec nginx.spec.org

参考にしているページに nginx.spec があるのでダウンロードして最新の nginx と Cache Purge plugin に合わせて編集。

[paraches@localhost SPECS]$ sudo wget http://sakuratan.biz/nginx/nginx.spec

変更箇所は

  • 最初の Version : 1.0.6 を 1.1.9 へ変更。
  • 全ての ngx_cache_purge-1.3 を ngx_cache_purge-1.5 へ変更。


nginx をビルド
rpmbuild コマンドでビルドをする。

[paraches@localhost SPECS]$ sudo rpmbuild -bb nginx.spec
<省略>
make[1]: Leaving directory `/usr/src/redhat/BUILD/nginx-1.1.9'
+ mv ngx_cache_purge-1.5/CHANGES ngx_cache_purge-1.5/CHANGES.ngx_cache_purge
+ mv ngx_cache_purge-1.5/README ngx_cache_purge-1.5/README.ngx_cache_purge
mv: cannot stat `ngx_cache_purge-1.5/README': No such file or directory
エラー: /var/tmp/rpm-tmp.69085 の不正な終了ステータス (%build)


RPM ビルドエラー:
    /var/tmp/rpm-tmp.69085 の不正な終了ステータス (%build)
[paraches@localhost SPECS]$ 

エラー出た!
ngx_cache_purge-1.5/README がないらしい。
ngx_cache_purge-1.5.tar.gz を展開して調べてみたら README.md はあったので、README.md を README にコピーして ngx_cache_purge-1.5.tar.gz を作り直す。

[paraches@localhost SPECS]$ cd ../SOURCES/
[paraches@localhost SOURCES]$ sudo tar zxvf ngx_cache_purge-1.5.tar.gz 
[paraches@localhost SOURCES]$ sudo cp ngx_cache_purge-1.5/README.md ngx_cache_purge-1.5/README
[paraches@localhost SOURCES]$ sudo mv ngx_cache_purge-1.5.tar.gz ngx_cache_purge-1.5.tar.gz.org
[paraches@localhost SOURCES]$ sudo tar zcvf ngx_cache_purge-1.5.tar.gz ngx_cache_purge-1.5

再度ビルド

[paraches@localhost SOURCES]$ cd ../SPECS/
[paraches@localhost SPECS]$ sudo rpmbuild -bb nginx.spec

ファイルの処理中: nginx-debuginfo-1.1.9-1
Provides: nginx.so.debug()(64bit)
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
伸張ファイルの検査中: /usr/lib/rpm/check-files /var/tmp/nginx-1.1.9-1-root-root
書き込み完了: /usr/src/redhat/RPMS/x86_64/nginx-1.1.9-1.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/nginx-debuginfo-1.1.9-1.x86_64.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.34603
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd nginx-1.1.9
+ rm -rf /var/tmp/nginx-1.1.9-1-root-root
+ exit 0
[paraches@localhost SPECS]$ 

無事終了。


できあがった rpm ファイルの確認

[paraches@localhost SPECS]$ ls /usr/src/redhat/RPMS/x86_64/
nginx-1.1.9-1.x86_64.rpm  nginx-debuginfo-1.1.9-1.x86_64.rpm
[paraches@localhost SPECS]$ 

ちゃんとできてる!


rpm コマンドで nginx をインストール

[paraches@localhost SPECS]$ sudo rpm -Uvh /usr/src/redhat/RPMS/x86_64/nginx-1.1.9-1.x86_64.rpm 

無事終了。