Posted by & filed under server.


とあるubuntuサーバのnginxにcache purgeモジュールを組み込んだ際,依存関係の解決が結構面倒だったのでメモ

パッケージ作成に必要なツールのインストール

まずはdpkgパッケージの作成に必要なツールをインストールします.

$ sudo apt-get install dpkg-dev dh-make

nginxのソースコードをダウンロード

nginxの最新版ソースコードを取得します.ここではホームディレクトリにsrcディレクトリを掘ってそこにダウンロードしています.

$ cd
$ mkdir src
$ cd src
$ apt-get source nginx

ngx_cache_purgeのダウンロードと組み込み

作者ホームページから最新版のngx_cache_purgeをダウンロードして解凍します.
解凍して出てきたディレクトリはnginxのソースディレクトリの中の,debian/modulesに入れておきます.

$ wget http://labs.frickle.com/files/ngx_cache_purge-1.6.tar.gz
$ tar xzf ngx_cache_purge-1.6.tar.gz
$ mv ngx_cache_purge-1.6 nginx-1.1.19/debian/modules/

その後,ビルドの設定(debian/rules)を書き換えて,モジュールが組み込まれるようにします.

--- rules.old   2012-09-11 09:32:12.345308311 +0900
+++ rules       2012-09-11 08:25:12.717161676 +0900
@@ -165,6 +165,7 @@
            --add-module=$(MODULESDIR)/nginx-upload-progress \
            --add-module=$(MODULESDIR)/nginx-upstream-fair \
            --add-module=$(MODULESDIR)/nginx-dav-ext-module \
+           --add-module=$(MODULESDIR)/ngx_cache_purge-1.6 \
             $(CONFIGURE_OPTS) >$@
        touch $@

今回は,nginx-extrasを使用しているのでその設定部分にのみモジュールを追加しています.

ビルドに必要なライブラリのインストール

nginxのビルドに必要なライブラリをインストールしていきます.
ビルドを試みてはこけ,試みてはこけを繰り返した結果,以下のライブラリのインストールでうまくいきました.

$ sudo apt-get install libpcre3-dev libssl-dev zlib1g-dev libgeoip-dev libgd2-noxpm-dev libxml2-dev libxslt-dev libpam-dev libexpat-dev liblua5.1-dev libperl-dev

パッケージのビルドとインストール

nginxのソースディレクトリでパッケージをビルドします.

$ cd nginx-1.1.19
$ dpkg-buildpackage -uc -b -d

パッケージは一つ下の階層のディレクトリに作成されます.

$ cd ../
$ sudo dpkg -i nginx-extras_1.1.19-1_amd64.deb