nginx PageSpeed 連携
Nid: 760
効果がないので、使用しないことにしました。
nginx に PageSpeed モジュールを組み込んでセットアップする。Google の Automated Install を使用すると、起動スクリプトや設定ファイル等の準備が大変なので、ここでは手動で deb パッケージを作成する。
1 . 準備
Apache 削除
$ sudo systemctl stop apache2 $ sudo apt-get remove apache2*
nginx を完全に削除
$ sudo apt-get purge nginx nginx-common $ sudo apt-get autoremove
Ubuntu から nginx をインストールし、設定ファイルを残して削除する。
$ sudo apt-get update && sudo apt-get install nginx
$ sudo apt-get remove nginx nginx-common
ビルドに必要なパッケージのインストール
$ sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
2 . Ubuntu リポジトリから nginx をダウンロード
nginx リポジトリの追加
$ wget http://nginx.org/keys/nginx_signing.key $ sudo apt-key add nginx_signing.key $ sudo vim /etc/apt/sources.list.d/nginx.list deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx $ sudo apt update
nginx をダウンロード
$ cd ~ && mkdir -p ~/new/nginx_source/ && cd ~/new/nginx_source/ $ apt-get source nginx $ ls nginx-1.11.6/ nginx_1.11.6-1~xenial.debian.tar.xz nginx_1.11.6-1~xenial.dsc nginx_1.11.6.orig.tar.gz
'packages cannot be authenticated'のエラーが出る場合は、以下のようにする。
$ sudo rm -rf /var/lib/apt/lists/ $ sudo apt-get update
3 . Pagespeed ダウンロード
最新バージョン確認と変数へのセット
$ lynx -dump -nolist https://github.com/pagespeed/ngx_pagespeed/releases | grep latest-stable latest-stable (BUTTON) … Marking 1.11.33.4 as latest-stable $ ngx_version=1.11.33.4
ダウンロード
$ mkdir -p ~/new/ngx_pagespeed/ && cd ~/new/ngx_pagespeed/ $ wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${ngx_version}-beta.zip $ unzip release-${ngx_version}-beta.zip $ cd ngx_pagespeed-release-${ngx_version}-beta/ $ wget https://dl.google.com/dl/page-speed/psol/${ngx_version}.tar.gz $ tar -xzvf ${ngx_version}.tar.gz
4 . nginx をビルド
設定
$ vim ~/new/nginx_source/nginx-1.11.6/debian/rules
config.status.nginx: に以下のオプションを追加 前行の末尾に「\」が必要。
直前行(オプション等) \ --add-module=../../../../ngx_pagespeed/ngx_pagespeed-release-1.11.33.4-beta
nginx ビルドに必要なパッケージのインストール
$ sudo apt-get build-dep nginx
nginx パッケージのビルド
$ cd ~/new/nginx_source/nginx-1.11.6/ $ dpkg-buildpackage -b
数分で完了するので、生成されたパッケージファイルを確認。
$ cd .. $ ls *.deb ../nginx_1.11.6-1~xenial_amd64.deb ../nginx-dbg_1.11.6-1~xenial_amd64.deb
deb パッケージのインストール
$ sudo dpkg -i *.deb
この設定では、末尾に PageSpeed モジュールの組み込みが確認できる
$ nginx -V nginx version: nginx/1.11.6 built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) built with OpenSSL 1.0.2g 1 Mar 2016 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' --add-module=../../../../ngx_pagespeed/ngx_pagespeed-release-1.11.33.4-beta
5 . 動作確認
設定 - http block
$ sudo vim /etc/nginx/nginx.conf #include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; # 仮想ホスト Server Blocks # Needs to exist and be writable by nginx. Use tmpfs for best performance. pagespeed FileCachePath /var/ngx_pagespeed_cache; pagespeed GlobalStatisticsPath /ngx_pagespeed_global_statistics; pagespeed GlobalAdminPath /pagespeed_global_admin;
設定 - server block
$ sudo vim /etc/nginx/sites-available/default pagespeed on; # Ensure requests for pagespeed optimized resources go to the pagespeed handler # and no extraneous headers get set. location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; } location ~ "^/pagespeed_static/" { } location ~ "^/ngx_pagespeed_beacon$" { } # PageSpeed Admin Pages location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; } location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all; } location /ngx_pagespeed_message { allow 127.0.0.1; deny all; } location /pagespeed_console { allow 127.0.0.1; deny all; } location ~ ^/pagespeed_admin { allow 127.0.0.1; deny all; } location ~ ^/pagespeed_global_admin { allow 127.0.0.1; deny all; } pagespeed StatisticsPath /ngx_pagespeed_statistics; pagespeed MessagesPath /ngx_pagespeed_message; pagespeed ConsolePath /pagespeed_console; pagespeed AdminPath /pagespeed_admin; # PageSpeed statistics location ~ "^/pagespeed_static/" { } location ~ "^/ngx_pagespeed_beacon$" { } # PageSpeed Filters pagespeed RewriteLevel CoreFilters; pagespeed EnableFilters move_css_above_scripts,move_css_to_head,prioritize_critical_css,inline_preview_images,resize_mobile_images,remove_comments,collapse_whitespace,lazyload_images,insert_dns_prefetch;
設定ファイルの確認と反映
$ sudo nginx -t && sudo nginx -s reload nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx を再起動
$ sudo systemctl restart nginx
このようなメッセージが出たら、umask して再起動。
Failed to restart nginx.service: Unit nginx.service is masked.
$ sudo systemctl unmask nginx $ sudo systemctl restart nginx
nginx にアクセス。稼働しているnginx および PageSpeedのバージョンが確認できる。
$ curl -I 127.0.0.1 HTTP/1.1 200 OK Server: nginx/1.11.6 Content-Type: text/html Connection: keep-alive Vary: Accept-Encoding Date: Wed, 30 Nov 2016 04:38:24 GMT X-Page-Speed: 1.11.33.4-0 Cache-Control: max-age=0, no-cache
6 . nginx アップグレードのホールド
apt-get upgrade コマンドで nginx がアップグレードされないようにホールドする。
$ sudo apt-mark hold nginx
アップグレードをホールドしているパッケージの確認。
$ apt-mark showhold nginx
Ref Link: