nginx:ngx_pagespeedを追加してビルドする(Ubuntu)

nginxのstableバージョンが1.6になったためリポジトリがアップデートされた
そのためバージョンが低いppaの野良ビルドが上書きされてしまい、
pagespeedが無効になってしまったので面倒ながら自分でビルドすることにした
通常のビルド手順だとパッケージ管理から外れてしまい、メンテナンスが厄介になるので
debianパッケージを作成することに。

まずは準備
ppaからパッケージをダウンロード出来るようにする
追加するppaはnginx公式によるリポジトリ(Ubuntu公式とは別)

sudo aptitude install python-software-properties
sudo add-apt-repository ppa:nginx/stable

ビルドに必要なパッケージを揃える
最新バージョンについての情報は以下より

GitHub - apache/incubator-pagespeed-ngx: Automatic PageSpeed optimization module for Nginx
Automatic PageSpeed optimization module for Nginx. Contribute to apache/incubator-pagespeed-ngx development by creating ...
sudo aptitude update
sudo aptitude safe-upgrade
sudo aptitude install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

ソースをもってくる、場所はとりあえずホームディレクトリ

mkdir ~/nginxsrc
cd ~/nginxsrc
sudo apt-get source nginx-full

モジュールをソースの中に配置する

cd nginx-1.6.0/debian/modules
wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.7.30.4-beta.zip
unzip v1.7.30.4-beta.zip
cd ngx_pagespeed-1.7.30.4-beta/
wget https://dl.google.com/dl/page-speed/psol/1.7.30.4.tar.gz
tar -xzvf 1.7.30.4.tar.gz

configureにngx_pagespeedのオプションを追加する
common,light,full,extrasなどに分かれているので利用するパッケージの部分に記述する

cd ~/nginxsrc/nginx-1.6.0
vi debian/rules

extrasに追加する場合の例(最後の行が該当):

extras_configure_flags := \
 $(common_configure_flags) \
 --with-http_addition_module \
 --with-http_dav_module \
 --with-http_flv_module \
 --with-http_geoip_module \
 --with-http_gzip_static_module \
 --with-http_image_filter_module \
 --with-http_mp4_module \
 --with-http_perl_module \
 --with-http_random_index_module \
 --with-http_secure_link_module \
 --with-http_spdy_module \
 --with-http_sub_module \
 --with-http_xslt_module \
 --with-mail \
 --with-mail_ssl_module \
 --add-module=$(MODULESDIR)/headers-more-nginx-module \
 --add-module=$(MODULESDIR)/nginx-auth-pam \
 --add-module=$(MODULESDIR)/nginx-cache-purge \
 --add-module=$(MODULESDIR)/nginx-dav-ext-module \
 --add-module=$(MODULESDIR)/nginx-development-kit \
 --add-module=$(MODULESDIR)/nginx-echo \
 --add-module=$(MODULESDIR)/ngx-fancyindex \
 --add-module=$(MODULESDIR)/nginx-http-push \
 --add-module=$(MODULESDIR)/nginx-lua \
 --add-module=$(MODULESDIR)/nginx-upload-progress \
 --add-module=$(MODULESDIR)/nginx-upstream-fair \
 --add-module=$(MODULESDIR)/ngx_http_substitutions_filter_module \
 --add-module=$(MODULESDIR)/ngx_pagespeed-1.7.30.4-beta

おまじないを一言放ってビルドを行う

sudo apt-get build-dep nginx
sudo dpkg-buildpackage -b

エラーなどが無ければ最初に作成したディレクトリ以下にパッケージが作成されているはず

cd ~/nginxsrc/
% ls
nginx-1.6.0 nginx-full_1.6.0-1+trusty0_amd64.deb nginx_1.6.0-1+trusty0.debian.tar.gz
nginx-common_1.6.0-1+trusty0_all.deb nginx-light-dbg_1.6.0-1+trusty0_amd64.deb nginx_1.6.0-1+trusty0.dsc
nginx-doc_1.6.0-1+trusty0_all.deb nginx-light_1.6.0-1+trusty0_amd64.deb nginx_1.6.0-1+trusty0_all.deb
nginx-extras-dbg_1.6.0-1+trusty0_amd64.deb nginx-naxsi-dbg_1.6.0-1+trusty0_amd64.deb nginx_1.6.0-1+trusty0_amd64.changes
nginx-extras_1.6.0-1+trusty0_amd64.deb nginx-naxsi-ui_1.6.0-1+trusty0_all.deb nginx_1.6.0.orig.tar.gz
nginx-full-dbg_1.6.0-1+trusty0_amd64.deb nginx-naxsi_1.6.0-1+trusty0_amd64.deb

インストール

sudo dpkg --install nginx-common_1.6.0-1+trusty0_all.deb nginx-extras_1.6.0-1+trusty0_amd64.deb

確認は-Vオプションで
最後にngx_pagespeedが追加されているはず。公式バージョンには無い。
(逆に言うと差分はそれぐらい)

% nginx -V
nginx version: nginx/1.6.0
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' 
--with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' 
--prefix=/usr/share/nginx 
--conf-path=/etc/nginx/nginx.conf 
--http-log-path=/var/log/nginx/access.log 
--error-log-path=/var/log/nginx/error.log 
--lock-path=/var/lock/nginx.lock 
--pid-path=/run/nginx.pid 
--http-client-body-temp-path=/var/lib/nginx/body 
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi 
--http-proxy-temp-path=/var/lib/nginx/proxy 
--http-scgi-temp-path=/var/lib/nginx/scgi 
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi 
--with-debug 
--with-pcre-jit 
--with-ipv6 
--with-http_ssl_module 
--with-http_stub_status_module 
--with-http_realip_module 
--with-http_auth_request_module 
--with-http_addition_module 
--with-http_dav_module 
--with-http_flv_module 
--with-http_geoip_module 
--with-http_gzip_static_module 
--with-http_image_filter_module 
--with-http_mp4_module 
--with-http_perl_module 
--with-http_random_index_module 
--with-http_secure_link_module 
--with-http_spdy_module 
--with-http_sub_module 
--with-http_xslt_module 
--with-mail 
--with-mail_ssl_module 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/headers-more-nginx-module 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-auth-pam 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-cache-purge 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-dav-ext-module 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-development-kit 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-echo 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/ngx-fancyindex 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-http-push 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-lua 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-upload-progress 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-upstream-fair 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/ngx_http_substitutions_filter_module 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/ngx_pagespeed-1.7.30.4-beta
タイトルとURLをコピーしました