NginxをSourceからBuildする

nginxによるTCPロードバランサー - Mercari Engineering Blogを試してみたくて、Emacsと同様サクッとソースコードからビルドしてみようかなーって思い立ったのでやった.


repo: http://hg.nginx.org/nginx/

多くの記事では wget で持ってくるが、今回はせっかくなのでちゃんとrepoからビルドしてみる.

Mercurial で管理されてるみたいなので git ではなく、 hg を使うみたいだ. なお、takeokunnmotemen/ghq 使ってるので関係がなかった.

Ubuntu18.04 を使っているための先に以下をinstall:

$ sudo apt install -y build-essential

# 入れとくと良いらしい
$ sudo add-apt-repository -y ppa:maxmind/ppa
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install -y perl libperl-dev libgd3 libgd-dev libgeoip1 libgeoip-dev geoip-bin libxml2 libxml2-dev libxslt1.1 libxslt1-dev

以下を叩く:

$ hg clone http://hg.nginx.org/nginx
$ cd nginx
$ ./auto/configure
$ make
$ sudo make install

./auto/configure 部分で引数に色々渡すことができる.


生成された Makefile には以下のようなコードがあり、手軽に make upgrade 出来るようになっているようだ.

upgrade:
    /usr/local/nginx/sbin/nginx -t

    kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
    sleep 1
    test -f /usr/local/nginx/logs/nginx.pid.oldbin

    kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

このブログでもソースコードからビルドしたものを使おうかなと思う.