序章

ngx_pagespeed、または単にpagespeedは、リソースのサイズを縮小し、クライアントのブラウザがサイトを読み込む必要がある時間を短縮することで、サイトを自動的に最適化するように設計されたNginxモジュールです。 まだご存じない方は、公式サイトをご確認ください。

この記事では、Nginxのpagespeedモジュールのインストールと構成について説明します。 Nginxは、Apacheなどの他のWebサーバーで利用可能なモジュールの動的ロードをサポートしていないことを知っておくことが重要です。 Nginxはこの機能をサポートしていないため、モジュールを追加するには、ソースからNginxをビルドする必要があります。

独自のカスタムパッケージを使用することには、1つの欠点があります。新しいバージョンがある場合は、それを更新する責任はユーザーが単独で負うことになります。 ngx_pagespeedを使用することの長所と短所を比較検討するときは、これを考慮に入れてください。

前提条件

このガイドはDebian8向けに書かれています。 Ubuntu14.04バージョンCentOS7バージョンも利用できます。

このチュートリアルを実行する前に、次の前提条件を満たしていることを確認してください。

  • Debian8ドロップレット
  • ルート以外のsudoユーザー(詳細については、 Debian 8 を使用した初期サーバーセットアップを確認してください。)

特に明記されていない限り、このチュートリアルでroot権限を必要とするすべてのコマンドは、sudo権限を持つroot以外のユーザーとして実行する必要があります。

ステップ1—ソースとその依存関係をダウンロードする

何よりもまず、Nginxを実行するために必要なすべての依存関係を満たす必要があります。 この目的のために、次のコマンドを実行します。

  1. sudo apt-get build-dep nginx

次に、ホームディレクトリにフォルダを作成して、Nginxのソースパッケージをダウンロードします。

  1. mkdir ~/custom-nginx

この新しく作成されたディレクトリに移動します。

  1. cd ~/custom-nginx

次に、次のコマンドを使用して、このディレクトリにあるNginxソースパッケージをダウンロードします。

  1. sudo apt-get source nginx

同じページにいることを確認するには、フォルダの内容を一覧表示します ~/custom-nginx:

  1. ls ~/custom-nginx

結果は次のようになります。

Output of ls ~/custom-nginx
nginx-1.6.2 nginx_1.6.2-5.debian.tar.xz nginx_1.6.2-5.dsc nginx_1.6.2.orig.tar.gz

ご覧のとおり、このチュートリアルの執筆時点では、Nginxソースパッケージのバージョンは1.6.2です。 ngx_pagespeedモジュールの追加を開始するには、最初にに移動する必要があります modules 抽出されたフォルダ内のフォルダ nginx-1.6.2:

  1. cd nginx-1.6.2/debian/modules

このディレクトリで、次のコマンドを使用して、Githubリポジトリから最新のngx_pagespeedソースアーカイブをダウンロードします。

  1. sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip

ダウンロードが完了すると、 unzip それを抽出するユーティリティ。 まだお持ちでない場合 unzip、次のコマンドでインストールします。

  1. sudo apt-get install unzip

その後、コマンドを使用してダウンロードしたファイルを抽出します。

  1. sudo unzip master.zip

これにより、という新しいディレクトリが作成されます ngx_pagespeed-master あなたの中に ~/nginx-1.6.2/debian/modules ディレクトリ。 便宜上、このディレクトリの名前を ngx_pagespeed コマンドで:

  1. sudo mv ngx_pagespeed-master ngx_pagespeed

新しい中に入る ngx_pagespeed ディレクトリ:

  1. cd ngx_pagespeed

そこから、コンパイルに必要なPageSpeed最適化ライブラリ(psol)をダウンロードします。

  1. sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.6.tar.gz

この記事を読んでいるときにpsolアーカイブへのリンクが機能していない場合は、この手順をスキップしてください。 次の手順でコンパイル中にライブラリが欠落している場合は、後でパッケージを取得する方法の更新された手順でエラーが表示されます。

最後に、psolパッケージを内部に抽出します ~/custom-nginx/nginx-1.6.2/debian/modules/ngx_pagespeed ディレクトリ:

  1. sudo tar -xzvf 1.9.32.6.tar.gz

ステップ2—ソースをカスタマイズする

この時点で、コンパイルルールをカスタマイズし、インストールにngx_pagespeedを含める準備ができています。 この目的のために、ファイルを編集します ~/custom-nginx/nginx-1.6.2/debian/rules お気に入りのエディターで:

  1. sudo nano ~/custom-nginx/nginx-1.6.2/debian/rules

Nginxのパッケージを構築するための4つの異なるシナリオがあります。 common, full, light、 と extras. 彼らの名前が示すように、 common サーバーなしの一般的なNginxファイルが含まれています。 full 最も人気のあるモジュールを備えたサーバーが含まれています、 light 必須モジュールのみでサーバーを作成し、 extras いくつかの特別なモジュールが含まれているサーバー用です。

あなたが必要だと仮定しましょう light Nginxセットアップとngx_pagespeed。 したがって、の終わりを追加します light_configure_flags 構成ブロックに次の行を追加します。

〜/ custom-nginx / nginx-1.6.2 / debian / rules
--add-module=$(MODULESDIR)/ngx_pagespeed

バックスラッシュを追加することを忘れないでください(\)前の行。 構成ブロック全体は次のようになります。

〜/ custom-nginx / nginx-1.6.2 / debian / rules
light_configure_flags := \
                        $(common_configure_flags) \
                        --with-http_gzip_static_module \
                        --without-http_browser_module \
                        --without-http_geo_module \
                        --without-http_limit_req_module \
                        --without-http_limit_zone_module \
                        --without-http_memcached_module \
                        --without-http_referer_module \
                        --without-http_scgi_module \
                        --without-http_split_clients_module \
                        --without-http_ssi_module \
                        --without-http_userid_module \
                        --without-http_uwsgi_module \
                        --add-module=$(MODULESDIR)/nginx-echo \
                        --add-module=$(MODULESDIR)/ngx_pagespeed

別のNginxセットアップの方が便利な場合は、他のビルドシナリオにも同じ行を追加できます。

次に、ソースパッケージのバージョンを増やします。これは、後でパッケージを固定するのに役立ちます。 これを実現するには、 changelog テキストエディタでファイル:

  1. sudo nano ~/custom-nginx/nginx-1.6.2/debian/changelog

の最初の行 changelog ファイルは現在のパッケージバージョンを表します(1.6.2-5)およびDebianディストリビューション名(unstable). 次のようなカスタムタグを追加します pagespeed 次のようなハイフンが前に付いたバージョン番号の末尾:

nginx (1.6.2-5-pagespeed) unstable; urgency=medium

ステップ3—Pagespeedモジュールを使用してNginxをビルドしてインストールする

ngx_pagespeedモジュールを含むようにビルドをカスタマイズしたので、Nginxをビルドする準備が整いました。

ディレクトリに移動します ~/custom-nginx/nginx-1.6.2/ コマンドで:

  1. cd ~/custom-nginx/nginx-1.6.2/

ここから、コマンドを実行して新しいカスタムNginxパッケージをビルドします。

  1. sudo dpkg-buildpackage -b

ビルドプロセスには最大で約10分かかります。 この間に切断されるのではないかと心配な場合は、 screen この記事で説明されているように。

すべての指示に従った場合、ビルドプロセスはエラーなしで完了するはずです。 新しいカスタムNginxパッケージを見つけるには、1つのディレクトリから ~/custom-nginx/ コマンドで:

  1. cd ~/custom-nginx/

の内容を一覧表示します ~/custom-nginx/ ディレクトリ:

  1. ls ~/custom-nginx/

あなたはたくさん見つける必要があります .deb パッケージ。 あなたが必要とするものは呼ばれます nginx-common_1.6.2-5-pagespeed_all.deb (一般的なNginxファイルを含む)および nginx-light_1.6.2-5-pagespeed_amd64.deb (カスタムライトサーバーを含む)。 The pagespeed で別のカスタムタグを指定した場合、パーツが異なる場合があります changelog ファイル。

pagespeedモジュールを使用してカスタムNginxをインストールするには、次のコマンドを実行します。

  1. sudo dpkg -i nginx-common_1.6.2-5-pagespeed_all.deb nginx-light_1.6.2-5-pagespeed_amd64.deb

ステップ4—Pagespeedモジュールを有効にする

これでNginxがインストールされました。 次のステップは、ngx_pagespeedモジュールを有効にすることです。

モジュールを有効にする前に、Webサイトのファイルをキャッシュするフォルダーを作成する必要があります。

  1. sudo mkdir -p /var/ngx_pagespeed_cache

Webサーバーがフォルダーにファイルを保存できるように、このフォルダーの所有権をNginxユーザーに変更してください。

  1. sudo chown -R www-data:www-data /var/ngx_pagespeed_cache

次に、メインのNginx構成ファイルを開きます nginx.conf このようなお気に入りのテキストエディタで:

  1. sudo nano /etc/nginx/nginx.conf

このファイルで、次の行をに追加します http 変更をブロックして保存します。

/etc/nginx/nginx.conf
##
# Pagespeed Settings
##

pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;

これらの行は、 http ブロックですが、この例では、ブロックの最後に追加しています。

これがどのように /etc/nginx/nginx.conf ファイルは今見えるはずです:

/etc/nginx/nginx.conf
...
http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        ##
        # Pagespeed Settings
        ##

        pagespeed on;
        pagespeed FileCachePath /var/ngx_pagespeed_cache;
...

また、すべてのにpagespeed構成行を追加する必要があります server にあるブロックファイル /etc/nginx/sites-available. たとえば、 /etc/nginx/sites-available/default ファイル:

  1. sudo nano /etc/nginx/sites-available/default

以下をに追加します server ブロック:

/ etc / nginx/sites-利用可能
#  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 ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }

上記のpagespeed構成行は、pagespeedがすべてのサイトのリソースを最適化することを保証します。

最後に、変更を有効にするためにNginxサーバーを再起動します。

  1. sudo service nginx restart

ステップ5—インストールをテストする

ngx_pagespeedモジュールが正常にインストールされているかどうかを確認するには、次のようにNginxバイナリを実行します。

  1. sudo /usr/sbin/nginx -V

インストールが成功すると、他のモジュールの中でngx_pagespeedモジュールが一覧表示されます。

Output
nginx version: nginx/1.6.2 ... --add-module=/home/your_user/custom-nginx/nginx-1.6.2/debian/modules/ngx_pagespeed

上記は、pagespeedが有効になっていて、サイトで機能することをまだ意味していません。 これを確認するには、 curl、クライアント側のURL転送用のツールとライブラリ。 お持ちでない場合 curl すでにインストールされている場合は、次のコマンドを使用してインストールします。

  1. sudo apt-get install curl

その後、 X-Page-Speed このようなヘッダー:

  1. curl -I -p http://localhost| grep X-Page-Speed

ngx_pagespeedモジュールが正常に機能する場合は、バージョンとともに出力に表示されます。

Output
X-Page-Speed: 1.9.32.6-7321

このヘッダーが表示されない場合は、前の手順の手順に従ってページスピードが有効になっていることを確認してください。

ステップ6—カスタムNginxパッケージを固定する

カスタムNginxパッケージが将来によって置き換えられるのを防ぐため apt Nginxの最新リリースでは、次の手順でパッケージがアップグレードされないように固定(保持)する必要があります。

新しいを作成します nginx のファイル /etc/apt/preferences.d:

  1. sudo nano /etc/apt/preferences.d/nginx

次に、次の行を貼り付けて保存します。

/etc/apt/preferences.d/nginx
Package: nginx-light
Pin: version 1.6.2-5-pagespeed
Pin-Priority: 1001

使用することにしたNginxパッケージを必ず指定してください。 私たちの例では、 nginx-light. また、次のようなカスタムタグと一緒に正確なバージョンを指定します 1.6.2-5-pagespeed.

結論

これが、カスタムモジュールpagespeedを使用してNginxを構築する方法です。 これらの手順は、Nginxでまだ利用できない他のモジュールに対して有効です。 さらに、ソースからパッケージをインストールするプロセス全体は、カスタマイズが必要になる可能性のある他のソフトウェアパッケージと同様です。 新しいバージョンがある場合は、これらのパッケージを自分で保守して再インストールする必要があることを忘れないでください。