Debian8でngx_pagespeedをNginxに追加する方法
序章
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を実行するために必要なすべての依存関係を満たす必要があります。 この目的のために、次のコマンドを実行します。
- 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モジュールの追加を開始するには、最初にに移動する必要があります modules
抽出されたフォルダ内のフォルダ nginx-1.6.2
:
- cd nginx-1.6.2/debian/modules
このディレクトリで、次のコマンドを使用して、Githubリポジトリから最新のngx_pagespeedソースアーカイブをダウンロードします。
- sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip
ダウンロードが完了すると、 unzip
それを抽出するユーティリティ。 まだお持ちでない場合 unzip
、次のコマンドでインストールします。
- sudo apt-get install unzip
その後、コマンドを使用してダウンロードしたファイルを抽出します。
- sudo unzip master.zip
これにより、という新しいディレクトリが作成されます ngx_pagespeed-master
あなたの中に ~/nginx-1.6.2/debian/modules
ディレクトリ。 便宜上、このディレクトリの名前を ngx_pagespeed
コマンドで:
- sudo mv ngx_pagespeed-master ngx_pagespeed
新しい中に入る ngx_pagespeed
ディレクトリ:
- cd ngx_pagespeed
そこから、コンパイルに必要なPageSpeed最適化ライブラリ(psol)をダウンロードします。
- 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
ディレクトリ:
- 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
構成ブロックに次の行を追加します。
--add-module=$(MODULESDIR)/ngx_pagespeed
バックスラッシュを追加することを忘れないでください(\
)前の行。 構成ブロック全体は次のようになります。
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
テキストエディタでファイル:
- 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/
コマンドで:
- cd ~/custom-nginx/nginx-1.6.2/
ここから、コマンドを実行して新しいカスタムNginxパッケージをビルドします。
- sudo dpkg-buildpackage -b
ビルドプロセスには最大で約10分かかります。 この間に切断されるのではないかと心配な場合は、 screen
この記事で説明されているように。
すべての指示に従った場合、ビルドプロセスはエラーなしで完了するはずです。 新しいカスタム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
(カスタムライトサーバーを含む)。 The pagespeed
で別のカスタムタグを指定した場合、パーツが異なる場合があります changelog
ファイル。
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
変更をブロックして保存します。
##
# Pagespeed Settings
##
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
これらの行は、 http
ブロックですが、この例では、ブロックの最後に追加しています。
これがどのように /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
ファイル:
- sudo nano /etc/nginx/sites-available/default
以下をに追加します server
ブロック:
# 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/your_user/custom-nginx/nginx-1.6.2/debian/modules/ngx_pagespeed
上記は、pagespeedが有効になっていて、サイトで機能することをまだ意味していません。 これを確認するには、 curl
、クライアント側のURL転送用のツールとライブラリ。 お持ちでない場合 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パッケージが将来によって置き換えられるのを防ぐため apt
Nginxの最新リリースでは、次の手順でパッケージがアップグレードされないように固定(保持)する必要があります。
新しいを作成します nginx
のファイル /etc/apt/preferences.d
:
- sudo nano /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でまだ利用できない他のモジュールに対して有効です。 さらに、ソースからパッケージをインストールするプロセス全体は、カスタマイズが必要になる可能性のある他のソフトウェアパッケージと同様です。 新しいバージョンがある場合は、これらのパッケージを自分で保守して再インストールする必要があることを忘れないでください。