新年早々 nginx_tcp_proxy_module を組み込んだ deb パッケージを作ってみる
昨年は本当に細々と更新してきましたが、今年も細々と更新していきたいと思います。本年もよろしくお願いいたします。
ということで、さっそく本題。
新年早々 WebSocket で遊んでみたいなぁと思ったので、nginx で WebSocket を Proxy する場合に有名という、nginx_tcp_proxy_module を組み込んで Debian/Wheezy にインストールすることに。
nginx のソースコード持ってきてコンパイルすればいいんだけど、dpkg でパッケージ管理をしたいこともあり deb パッケージを作成することにしました。
nginx_tcp_proxy_module をダウンロード
以下の配布ページよりダウンロード
- nginx_tcp_proxy_module
- http://yaoweibin.github.com/nginx_tcp_proxy_module/
せずに、なんとなく上記ページにも記載のある github からもってきました。
- yaoweibin / nginx_tcp_proxy_module
- https://github.com/yaoweibin/nginx_tcp_proxy_module
# git clone https://github.com/yaoweibin/nginx_tcp_proxy_module.git # rm -rf nginx_tcp_proxy_module/.git*
普通にダウンロードすればいい気がしますね。
nginx のソースコードをダウンロードする
aptitude で source を入手する方法が分からなかったので *1 昔ながらの apt-get を使ってソースコードを入手しました。
# apt-get source nginx
Build ルールを編集する
展開された nginx のソースコードディレクトリに、configure する際のルールが記載されたファイルがあるため、これを編集して nginx_tcp_proxy_module が組み込まれるようにします。
- debian/rules
--- rules 2013-01-01 17:51:47.218259979 +0900 +++ nginx-1.2.1/debian/rules 2013-01-01 18:04:33.386259773 +0900 @@ -88,6 +88,7 @@ --add-module=$(MODULESDIR)/nginx-echo \ --add-module=$(MODULESDIR)/nginx-upstream-fair \ --add-module=$(MODULESDIR)/nginx-dav-ext-module \ + --add-module=$(MODULESDIR)/nginx_tcp_proxy_module \ $(CONFIGURE_OPTS) >$@ touch $@ @@ -119,6 +120,7 @@ --without-http_userid_module \ --without-http_uwsgi_module \ --add-module=$(MODULESDIR)/nginx-echo \ + --add-module=$(MODULESDIR)/nginx_tcp_proxy_module \ $(CONFIGURE_OPTS) >$@ touch $@ @@ -168,6 +170,7 @@ --add-module=$(MODULESDIR)/nginx-upload-progress \ --add-module=$(MODULESDIR)/nginx-upstream-fair \ --add-module=$(MODULESDIR)/nginx-dav-ext-module \ + --add-module=$(MODULESDIR)/nginx_tcp_proxy_module \ $(CONFIGURE_OPTS) >$@ touch $@ @@ -196,6 +199,7 @@ --add-module=$(MODULESDIR)/nginx-upstream-fair \ --add-module=$(MODULESDIR)/nginx-cache-purge \ --add-module=$(MODULESDIR)/naxsi/naxsi_src \ + --add-module=$(MODULESDIR)/nginx_tcp_proxy_module \ $(CONFIGURE_OPTS) >$@ touch $@
nginx_tcp_proxy_module のソースコードを deb パッケージに配置する
nginx のソースコードのディレクトリに、nginx_tcp_proxy_module をコピーします。
# cp -R nginx_tcp_proxy_module/ nginx-1.2.1/debian/modules/
patch を適用する
nginx_tcp_proxy_module を有効にするにはソースコードに patch をあてる必要があるため、Build 時に適用されるよう編集します。
patch 適用には quilt を利用しましたが、patch コマンドで適用するだけでいい気がします。
# cd nginx-1.2.1 # quilt new tcp.patch # quilt add src/core/ngx_log.c # quilt add src/core/ngx_log.h # quilt add src/event/ngx_event_connect.h # patch -p1 < debian/modules/nginx_tcp_proxy_module/tcp.patch # quilt refresh
パッケージを再生成する
dpkg-builder でパッケージを再生成します。
# cd nginx-1.2.1 # dpkg-builder -b
完成
Build が完了すると、deb パッケージがたくさん生成されるので、あとは必要に応じて deb パッケージを dpkg を使ってインストールすれば OK ですね。
ということで、次は実際に作成した nginx のパッケージで WebSocket アプリを Proxy してみたいと思います。
ひとまず無事インストール完了ということで、わーい。
*1:知ってる方教えてください。