ngx_pagespeedは、ウェブサイトの速度を最適化するためのベストプラクティスを自動的に適用するオープンソースのNginxモジュールです。このチュートリアルでは、Ubuntu16.04LTSでngx_pagespeedモジュールを使用してNginxをコンパイルする方法について説明します。
1。 Nginx構成ファイルのバックアップ
Nginxをコンパイルしてインストールすると、元のNginx構成ファイルが上書きされます。次のコマンドを使用して、メインの構成ファイルとサーバーブロックファイルをホームディレクトリにバックアップできます。チルダはホームディレクトリを表します。
cp /etc/nginx/nginx.conf /etc/nginx/sites-available/*.conf /etc/nginx/conf.d/*.conf ~
2。公式のNginxリポジトリを追加する
チュートリアルでは、この記事の執筆時点で、最新のNginxメインラインバージョン1.11.1をコンパイルする方法を示します。 Ubuntu16.04リポジトリにはNginx1.10があります。以下に示すように、公式のNginxリポジトリを追加します。
最初にNginxGPGキーをフェッチし、Ubuntu16.04システムにインポートします。
wget http://nginx.org/keys/nginx_signing.key sudo apt-key add nginx_signing.key
次に、sources.list
を編集します ファイル。
sudo nano /etc/apt/sources.list
このファイルの最後に次の2行を追加します。 deb-src行を使用すると、apt source
を使用してNginxソースパッケージをダウンロードできます。 コマンド。
deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx
Ctrl+Oを押してファイルを保存します。 Ctrl+Xを押してファイルを閉じます。次に、ローカルパッケージインデックスを更新します。
sudo apt update
これで、Nginx公式リポジトリがUbuntu16.04に追加されました。
3Nginxソースパッケージをダウンロード
nginx
を作成します Nginxソースを保存するホームディレクトリの下のディレクトリを作成し、そのディレクトリにcdします。
mkdir ~/nginx && cd ~/nginx
dpkg-dev
をインストールします 次のコマンドでNginxソースパッケージをダウンロードします:
sudo apt install dpkg-dev sudo apt source nginx
ダウンロードしたファイルを確認してください。
ls ~/nginx/
出力:
nginx-1.11.1 nginx_1.11.1-1~xenial.dsc nginx_1.11.1-1~xenial.debian.tar.xz nginx_1.11.1.orig.tar.gz
4。 ngx_pagespeedソースパッケージをダウンロード
ngx_pagespeedモジュールを使用してNginxをコンパイルするには、ngx_pagespeedソースパッケージも必要です。 Githubngx_pagespeedダウンロードページに移動します。 (https://github.com/pagespeed/ngx_pagespeed/releases
)最新のベータリリースをホームディレクトリにダウンロードします。
v1.11.33.2-この執筆時点でのベータ版。バージョン番号の変更が必要になる場合があります。
cd ~ wget https://codeload.github.com/pagespeed/ngx_pagespeed/zip/v1.11.33.2-beta
解凍します:
sudo apt-get install unzip unzip v1.11.33.2-beta
新しく作成されたディレクトリにcdします:
cd ngx_pagespeed-1.11.33.2-beta/
また、psolライブラリをダウンロードする必要があります。 (PageSpeed最適化ライブラリ)そしてそれを抽出します。バージョン番号は、ページ速度のバージョン番号に対応しています。
wget https://dl.google.com/dl/page-speed/psol/1.11.33.2.tar.gz tar xvf 1.11.33.2.tar.gz
psol
を作成します ngx_pagespeed-1.11.33.2-beta
の下のディレクトリ ディレクトリとそれが必要な場所です。
5。 ngx_pagespeedモジュールをNginxコンパイルルールに追加
Nginxコンパイルルールファイルを編集します。
sudo nano ~/nginx/nginx-1.11.1/debian/rules
COMMON_CONFIGURE_ARGS
の最後に セクションに、次の行を追加します。 username
を置き換えます 実際のユーザー名で。この行は、ngx_pagespeedモジュールの場所を指定します。
--add-module=/home/username/ngx_pagespeed-1.11.33.2-beta
このチュートリアルでは、ngx_pagespeedのソースページをホームディレクトリにダウンロードします。 rootアカウントを使用する場合は、/home/username
を置き換えます /root
を使用 。 rootユーザーのホームディレクトリは/root
であるため 。
また、--with-ld-opt
に円記号を追加する必要があることに注意してください。 下のスクリーンショットのような行。そうでない場合は、 –add-module 追加した行は、Nginxのコンパイル時に無視されます。
次に、ファイルを保存して閉じます。
6。コンパイルを開始します!
Nginxソースディレクトリにいることを確認してください。
cd ~/nginx/nginx-1.11.1/
Nginxdebパッケージをビルドするために必要なすべての依存関係をインストールします。
sudo apt build-dep nginx
次のコマンドを使用して、debパッケージをビルドします。
sudo dpkg-buildpackage -b
コーヒーを飲み、数分待ちます。シングルコアOpenVZVPSでは、このビルドプロセスには約20分かかりました。完了すると、〜/ nginx /に7つのdebファイルが作成されます ディレクトリ。 nginx_1.11.1-1~xenial_amd64.deb
をインストールするだけで済みます またはnginx_1.11.1-1~xenial_i386.deb
パッケージ、OSアーキテクチャによって異なります。その他は、Nginx動的モジュールパッケージとデバッグパッケージです。必要に応じてインストールすることもできます。
以前にNginxをインストールしたことがある場合は、古いバージョンを削除してから新しいバージョンをインストールします。
sudo apt remove nginx nginx-common nginx-full cd ~/nginx sudo dpkg -i nginx_1.11.1-1~xenial_amd64.deb
または
sudo dpkg -i nginx_1.11.1-1~xenial_i386.deb
それでは、Nginxを起動しましょう。
sudo systemctl start nginx
次のエラーメッセージが表示された場合。
Failed to start nginx.service: Unit nginx.service is masked.
次に、nginxのマスクを解除し、startコマンドを再度発行します。
sudo systemctl unmask nginx
Nginxプロセスはユーザーnginx
として実行される可能性があることに注意してください またはwww-data
。これは、/etc/nginx/nginx.conf
の最初の行を編集することで変更できます。 ファイル。 NginxがPHP-FPMと同じユーザーとして実行されていることを確認してください。
次に、Nginxの構成引数を確認します。
sudo nginx -V
最後に次の行が表示されている場合は、ngx_pagespeedモジュールがNginxに正常に追加されています。
--add-module=/home/username/ngx_pagespeed-1.11.33.2-beta
7。 ngx_pagespeedモジュールを有効にする
PageSpeedはNginxと一緒にインストールされますが、デフォルトでは無効になっています。有効にする前に、pingdom.comまたはwebpagetest.orgでWebサイトの速度をテストすることをお勧めします。ページサイズ、リクエスト数、ページ読み込み時間などに注意してください。PageSpeedを有効にした後、2つの結果を比較するために、もう一度テストを実行してください。
ページスピードキャッシュ用のフォルダーを作成し、その所有権をNginxユーザー(www-dataまたはnginx)に変更して、Nginxで書き込めるようにします。
sudo mkdir -p /var/ngx_pagespeed_cache sudo chown -R www-data:www-data /var/ngx_pagespeed_cache
次に、Nginxサーバーブロック構成ファイルを編集します。
sudo nano /etc/nginx/conf.d/your-domain.conf
サーバーセクションに次のpagespeedディレクティブを追加します。
# enable pagespeed module on this server block pagespeed on; # Needs to exist and be writable by nginx. Use tmpfs for best performance. pagespeed FileCachePath /var/ngx_pagespeed_cache; # 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 RewriteLevel CoreFilters;
1台のサーバーで複数のWebサイトをホストする場合は、上記のpagespeedディレクティブを各サーバーブロック構成ファイルに追加して、それぞれでpagespeedを有効にします。
最後のディレクティブセットCoreFilters
書き換えレベルとして。 PageSpeedは3つの書き換えレベルを提供します:CoreFilter
、PassThrough
およびOptimizeForBandwidth
。 CoreFilter
ほとんどのWebサイトで安全と見なされるフィルターが含まれているため、これがデフォルトです。
CoreFilter
次のフィルターが含まれています。
add_head combine_css combine_javascript convert_meta_tags extend_cache fallback_rewrite_css_urls flatten_css_imports inline_css inline_import_to_link inline_javascript rewrite_css rewrite_images rewrite_javascript rewrite_style_attributes_with_url
サーバーブロック構成ファイルを保存して閉じます。次に、Nginxをリロードします。
sudo systemctl reload nginx
8。 PageSpeedが機能しているかどうかを確認します
あなたのウェブサイトに行きます。数回更新してから、ページのソースを確認してください。 Ctrl + Fを押します キーを押してpagespeedを検索します 。 Webサイトリソースの多くがpagespeedによって処理されていることがわかります。一部のcssファイルとjavascriptファイルは1つのファイルに結合されます。 Google Chromeブラウザを使用している場合は、ウェブサイトの写真が webpに変換されていることがわかります。 フォーマット。 webpは画像ファイルのサイズを大幅に減らすことができます。
ウェブサイトの速度テストを比較すると、ngx_pagespeedが機能していることもわかります。
また、サーバー上で次のコマンドを発行できます:
curl -I -p http://your-domain.com| grep X-Page-Speed
X-Page-Speedとそのバージョン番号が表示されます。
X-Page-Speed: 1.11.33.2-7423
9。 Nginxがアップグレードされないようにする
新しいバージョンのNginxがリポジトリで利用できる場合は、apt-getアップグレード コマンドはデフォルトでNginxをアップグレードし、ngx_pagespeedモジュールはなくなります。したがって、Nginxがアップグレードされないようにする必要があります。これは、次のコマンドで実行できます。
sudo apt-mark hold nginx
保持されているパッケージを表示するには:
apt-mark showhold
CoreFiltersにないNginxサーバーブロック構成ファイルに追加したいいくつかのpagespeedディレクティブ。
pagespeed EnableFilters collapse_whitespace; pagespeed EnableFilters lazyload_images; pagespeed EnableFilters insert_dns_prefetch;
サーバーブロックの構成ファイルを変更した後は、Nginxをリロードすることを忘れないでください。
各フィルターの詳細な説明については、GooglePageSpeedFilterページにアクセスしてください。
コメント、質問、提案はいつでも歓迎します。この投稿が役に立ったと思ったら、🙂ソーシャルメディアで友達と共有してください!その他のLinuxチュートリアルにご期待ください。