前書き

ngx_pagespeed、または単にpagespeedは、リソースのサイズを小さくすることでクライアントのブラウザーがロードする時間を短縮することでサイトを自動的に最適化するように設計されたNginxモジュールです。 まだ詳しくない場合は、https://developers.google.com/speed/pagespeed/module/ [公式サイト]をご覧ください。

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

独自のカスタムパッケージを作成することには1つの欠点があります。新しいバージョンが存在する場合、それを更新する責任はお客様にあります。 ngx_pagespeedを使用する場合の長所と短所を比較検討する際に、これを考慮してください。

前提条件

このガイドはDebian 8向けに書かれています。 リンク:/ community / tutorials / how-to-add-ngx_pagespeed-to-nginx-on-ubuntu-14-04 [Ubuntu 14.04バージョン]およびリンク:/ community / tutorials / how-to-add-ngx_pagespeed-to -nginx-on-centos-7 [CentOS 7 version]も利用できます。

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

  • Debian 8ドロップレット

  • 非ルートsudoユーザー(詳細については、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-8 [Debian 8での初期サーバー設定]をご覧ください。)

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

ステップ1-ソースとその依存関係のダウンロード

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

sudo apt-get build-dep nginx

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

mkdir ~/custom-nginx

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

cd ~/custom-nginx

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

sudo apt-get source nginx

同じページにいることを確認するには、フォルダー `+〜/ custom-nginx +`のコンテンツをリストします。

ls ~/custom-nginx

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

Output of ls ~/custom-nginxnginx-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モジュールの追加を開始するには、まず、抽出されたフォルダー `+ nginx-1.6.2 `内の ` modules +`フォルダーに移動する必要があります。

cd nginx-1.6.2/debian/modules

このディレクトリで、次のコマンドを使用してhttps://github.com/pagespeed/ngx_pagespeed[Github repository]から最新のngx_pagespeedソースアーカイブをダウンロードします。

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

ダウンロードが完了したら、解凍するために `+ unzip `ユーティリティが必要になります。 ` unzip +`がまだない場合は、次のコマンドでインストールします:

sudo apt-get install unzip

その後、コマンドでダウンロードしたファイルを抽出します:

sudo unzip master.zip

これにより、 `〜/ nginx-1.6.2 / debian / modules +`ディレクトリ内に ` ngx_pagespeed-master `という新しいディレクトリが作成されます。 便宜上、次のコマンドを使用して、このディレクトリの名前を「 ngx_pagespeed +」に変更します。

sudo mv ngx_pagespeed-master ngx_pagespeed

新しい `+ ngx_pagespeed +`ディレクトリ内に移動します。

cd ngx_pagespeed

そこから、コンパイルに必要なPageSpeed Optimization Libraries(psol)をダウンロードします。

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

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

最後に、 `+〜/ custom-nginx / nginx-1.6.2 / debian / modules / ngx_pagespeed +`ディレクトリ内でpsolパッケージを抽出します。

sudo tar -xzvf 1.9.32.6.tar.gz

ステップ2-ソースのカスタマイズ

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

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

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

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

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

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

nginx (1.6.2-5) unstable; urgency=medium

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

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

次のコマンドでディレクトリ `+〜/ custom-nginx / nginx-1.6.2 / +`に移動します:

cd ~/custom-nginx/nginx-1.6.2/

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

sudo dpkg-buildpackage -b

ビルドプロセスには最大で約10分かかります。 この間に接続が切断されることが心配な場合は、https://www.digitalocean.com/community/articles/how-to-install-and-use-screen-onで説明されているように、「+ screen +」を使用してみてください。 -an-ubuntu-cloud-server [この記事]。

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

cd ~/custom-nginx/

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

ls ~/custom-nginx/

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

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

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サイトのファイルをキャッシュするフォルダーを作成する必要があります。

sudo mkdir -p /var/ngx_pagespeed_cache

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

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

次に、次のようなお気に入りのテキストエディターでメインのNginx設定ファイル `+ nginx.conf +`を開きます。

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;







...

また、 `+ / etc / nginx / sites-available `にある_every_ ` server `ブロックファイルにpagespeedの設定行を追加する必要があります。 たとえば、 ` / etc / nginx / sites-available / default +`ファイルを編集します:

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

`+ server +`ブロックに以下を追加してください:

/ etc / nginx / sites-available

#  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サーバーを再起動します。

sudo service nginx restart

手順5-インストールのテスト

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

sudo /usr/sbin/nginx -V

インストールが成功した場合、他のモジュールの中にngx_pagespeedモジュールがリストされているはずです。

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

上記のことは、まだページ速度が有効であり、サイトで機能しているという意味ではありません。 これを確認するには、クライアント側のURL転送用のツールおよびライブラリである `+ curl `を使用できます。 ` curl +`がまだインストールされていない場合は、次のコマンドでインストールします:

sudo apt-get install curl

その後、次のような `+ X-Page-Speed +`ヘッダーを確認します。

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

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

OutputX-Page-Speed: 1.9.32.6-7321

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

手順6-カスタムNginxパッケージを固定する

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

`+ / etc / apt / preferences.d `に新しい ` nginx +`ファイルを作成します。

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でまだ利用できない他のモジュールに有効です。 さらに、ソースからパッケージをインストールするプロセス全体は、カスタマイズが必要な他のソフトウェアパッケージと同様です。 新しいバージョンがある場合は、これらのパッケージを自分で保守して再インストールする必要があることを忘れないでください。