GoogleのPageSpeedモジュール 、はmod_PageSpeedとも呼ばれ、オープンソースのApache HTTPまたはNginxサーバーレベルパッケージであり、サーバーのスタイルシート、JavaScript、HTMLファイルおよび画像を最適化するページへのさまざまなフィルターを使用してサイトを最適化するのに役立ちます。機能。
次のチュートリアルでは、Debian11BullseyeにNginxPagespeedをインストールして基本的なセットアップを行う方法を学習します。
Debianを更新します 既存のすべてのパッケージが最新であることを確認するためのオペレーティングシステム:
sudo apt update && sudo apt upgrade -y
次のコマンドを使用して、パッケージがインストールされているかどうかをインストールまたは確認します。
sudo apt install apt-transport-https unzip wget curl git dpkg-dev uuid-dev make build-essential gnupg2 ca-certificates lsb-release debian-archive-keyring -y
ページ速度については、Nginxソースをコンパイルする必要がありますが、サイトの速度を向上させようとしているため、メインラインまたは安定版の間で利用可能な最新のNginxバージョンをインポートしてインストールすることを強くお勧めします。
Nginxはメインラインバージョンの使用を推奨していますが、安定版はそれほどアップグレードしたくないユーザーにも同様に適しています。
両方ではなく、1つのリポジトリのみをインポートします。
オプション1-Nginxメインラインのインポート(推奨)
curl -sSL https://packages.sury.org/nginx-mainline/README.txt | sudo bash -x
オプション2–NginxStableをインポート
curl -sSL https://packages.sury.org/nginx/README.txt | sudo bash -x
次に、updateaptupdateを実行して同期します。
sudo apt update
次に、Nginxのインストールを開始します。チュートリアルはnginxメインラインをインストールします 。
sudo apt install nginx-core nginx-common nginx nginx-full -y
次のコマンドを使用してサービスをアクティブにします。
sudo systemctl enable nginx --now
インポートされたリポジトリでは、このバージョンで利用可能な追加のモジュール、特にbrotliサポートに気付くでしょう。これらは、以下の手順でインストールできます。
nginx.confを開きます 構成ファイル:
nano /etc/nginx/nginx.conf
次に、 HTTP {}の前に行を追加します セクション:
brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;
次に、Nginxドライランを実行します。
sudo nginx -t
出力は次の例になります。そうでない場合は、発生したエラーを修正して修正してください。
例:
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
Nginxソースパッケージをダウンロード
「ngx_pagespeedモジュール」をコンパイルする必要があります 「 動的モジュールとしてソースから。これまでにこれを行ったことがない場合は、現在および将来このモジュール用にコンパイルするためのディレクトリを作成する方法について説明します。 APTパッケージマネージャーを使用してNginxを更新するたびに、ソースを再ダウンロードして動的モジュールを再コンパイルする必要があります。
まず、デフォルトでは、 deb-src リポジトリが追加および有効化されていません。 Nginxソースをダウンロードする前に、これをインポートして追加する必要があります。そうしないと、間違ったバージョンが取得されます。
オプション1– Nginx Mainline Deb-Source
echo "deb-src https://packages.sury.org/nginx-mainline/ bullseye main
" | sudo tee -a /etc/apt/sources.list.d/nginx-mainline.list
オプション2– NginxStableDeb-ソース
echo "deb-src https://packages.sury.org/nginx-mainline/ bullseye main" | sudo tee -a /etc/apt/sources.list.d/nginx.list
次に、APT更新を実行して、新しい追加を同期します。
sudo apt update
Nginxソースディレクトリを作成します。
sudo mkdir -p /usr/local/src/nginx
次に、CDで新しく作成したディレクトリに移動します。
cd /usr/local/src/nginx
次に、以下のsudoコマンドに従ってNginxソースパッケージをダウンロードします。
sudo apt source nginx
拒否されたメッセージが表示されることに注意してください。これは無視できます。
例:

次に、次のコマンドを入力して、ソースがダウンロードされたことを確認します。
ls -l
たとえば、出力は次のようになります。

ngx_pagespeedリポジトリのクローンを作成
ガイドの次の部分では、「ngx_pagespeed」をダウンロードする必要があります。 ソースパッケージ。後で更新を簡単にプルして将来再コンパイルできるため、Gitを使用してpagespeedソースのクローンを作成することをお勧めします。
このパートでは、現在 v1.13.35.2-stableの2つのオプションがあります リポジトリブランチまたはv1.14.33.1-RC1 プレリリースブランチ。どちらにも問題があります。提案は、Gitにアクセスして、現在の問題のリストを読むことです。 いずれかが他よりもあなたに影響を与えるかどうかを確認します。
チュートリアルでは、プレリリースバージョンのインストールが最適であることがわかりました。安定していても、より多くのメリットが得られる可能性がありますが、それを行うのは難しいことです。
まず、ディレクトリにCDを挿入します:
cd /usr/local/src
次に、ngx_pagespeedgitソースのクローンを作成します。
sudo git clone https://github.com/apache/incubator-pagespeed-ngx.git
次の部分は、安定版とプレリリースの2つの異なる方法で実行できます。両方を以下にリストします。
新しくクローンされたngx_pagespeedにCDを挿入します ソース、最新の安定したブランチをチェックしてください。
cd incubator-pagespeed-ngx
最新の安定したpagespeedリリースを確認してください。
sudo git checkout latest-stable
これで、出力の最後に“ PSOL_BINARY_URL 「 印刷した。 PSOL URLダウンロードリンクは、使用したブランチであるGITチェックアウトからダウンロードする必要があるページ速度最適化ライブラリです。
ダウンロードするライブラリのURLを見つけるには、次のコマンドを入力して表示します。
catコマンドを使用してURLを検索します:
cat PSOL_BINARY_URL
出力例:
https://dl.google.com/dl/page-speed/psol/1.13.35.2-$BIT_SIZE_NAME.tar.gz
出力に“ $ BIT_SIZE_NAMEがあることに注意してください 「 。これは、ほとんどの人が x64になるためです。 。
次に、PageSpeed最適化ライブラリをダウンロードします(PSOL) 続行します。
sudo wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz
次に、アーカイブを抽出します。これにより、“ psol が作成されます 」 ディレクトリを自動的に作成し、ファイルを抽出します。長いリストが印刷されますが、すべてのライブラリは、完了したらNginxソースを使用して動的モジュールとしてコンパイルする準備ができています。
sudo tar xvf 1.13.35.2-x64.tar.gz
プレリリースのngx_pagespeedモジュールとPSOLライブラリを使用するプロセスは、安定版ブランチと同じです。したがって、以下のようにいくつかのオプションを変更するだけです。
クローンngx_pagespeedソースにCDを挿入し、最新のプレリリースブランチを確認してください。プレリリースブランチは将来変更される可能性が高いことに注意してください。
したがって、Githubプロジェクトのブランチにアクセスする必要があります そして最新のものを見つけてください。現在、36ブランチは、“ v1.14.33.1-RC1を備えたプレリリースブランチです。 「 。手順については、「安定版」に戻ってクローンを作成する手順をスキップします。
cd incubator-pagespeed-ngx
36番のプレリリースページスピードブランチをチェックしてください:
sudo git checkout 36
これで、出力の最後に“ PSOL_BINARY_URL 「 印刷した。 PSOL URLダウンロードリンクは、使用したブランチであるGITチェックアウトからダウンロードする必要があるページ速度最適化ライブラリです。
ダウンロードするライブラリのURLを見つけるには、次のコマンドを入力して表示します。
cat PSOL_BINARY_URL
出力例:
https://dist.apache.org/repos/dist/release/incubator/pagespeed/1.14.36.1/x64/psol-1.14.36.1-apache-incubating-$BIT_SIZE_NAME.tar.gz
出力に“ $ BIT_SIZE_NAMEがあることに注意してください 「 。これは、ほとんどの人がx64になります。
次に、PageSpeed最適化ライブラリをダウンロードします(PSOL) 続行します。
wget https://dist.apache.org/repos/dist/release/incubator/pagespeed/1.14.36.1/x64/psol-1.14.36.1-apache-incubating-$BIT_SIZE_NAME.tar.gz
アーカイブを抽出します。
sudo tar xvf psol-1.14.36.1-apache-incubating-x64.tar.gz
Nginxをngx_pagespeedモジュールでコンパイル
次に、PSOLライブラリでダウンロードしたngx_pagespeedモジュールでダウンロードしたNginxソースをコンパイルします。
まず、NginxソースディレクトリにCDを挿入します。 Nginxのバージョン番号は異なる場合があることに注意してください。
例のみ:
cd /usr/local/src/nginx/nginx-1.21.4/
次に、Nginxソースのビルド依存関係をインストールします。
sudo apt build-dep nginx -y
次に、「 –with-compactフラグ」を使用してngx_pagespeedモジュールをコンパイルします。 「 。このプロセスにより、将来のファイルモジュールが“ ngx_pagespeed.so になります 「 アクティブなNginxサーバーと互換性があります。
sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/incubator-pagespeed-ngx
次に、モジュールの作成コマンドを使用します 。このプロセスは最大で約1分かかります。
sudo make modules
次に、新しく作成した「ngx_pagespeed.so」をコピーします。 モジュールをアクティブなNginxサーバーディレクトリに追加します。場所はインストールによって異なる場合がありますが、ほとんどの人は同じである必要があります。
sudo cp objs/ngx_pagespeed.so /etc/nginx/modules/
代替:
sudo cp objs/ngx_pagespeed.so /usr/share/nginx/modules/
Nginxにngx_pagespeedモジュールをロード
これで、ngx_pagespeedモジュールをNginxにロードするときが来ました。これには、テキストエディタnanoを使用します。まず、「 nginx.conf」を開きます 「 ファイル。
sudo nano /etc/nginx/nginx.conf
ここで、次の行を追加します。
load_module modules/ngx_pagespeed.so; ##### insert with other modules ###
例:

終了するには、ドライランコマンドでNginx構成をテストし、問題がなければNginxサーバーを再起動します。
sudo nginx -t
例:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Nginx構文に問題がない場合は、Nginxサービスを再起動します。
sudo systemctl restart nginx
PageSpeedキャッシュを作成
フィルタを設定する前に、Nginx pagespeedのキャッシュディレクトリを作成して、キャッシュされたファイルと画像変換を保存する必要があります。これは、選択した場所に変更できます。ただし、ガイド用のNginxフォルダーの下に作成します。
キャッシュディレクトリを作成します:
sudo mkdir -p /etc/nginx/ngx_pagespeed_cache
www-dataユーザーを所有者として設定します(重要):
sudo chown -R www-data:www-data /etc/nginx/ngx_pagespeed_cache
PageSpeedファイラーのセットアップ
さて、ページスピードフィルターを設定する方法はいくつかありますが、どれも正しいか間違っているかはわかりません。ただし、この例では「pagespeed.conf」が作成されます。 このチュートリアルの構成ファイル。
これは、pagespeedの設定が難しい場合があり、多くの場合Webサイトを壊す可能性があるためです。 pagespeedモジュールをすばやく元に戻したい場合は、インクルード pagespeed.confに対してコメントできます。 サーバーブロックの行。
pagespeed.confファイルを作成します:
sudo nano /etc/nginx/modules-available/pagespeed.conf
次に、ほとんどのWebサイトで安全に設定されているプライマリフィルターについて説明します。ただし、これは将来、さまざまなオプションに変更および変更される可能性がありますが、ドキュメントに注意深くアクセスして、これを調査する必要があります。
###enable pagespeed on the server block###
pagespeed on;
pagespeed Domain https://www.example.com;
pagespeed Domain https://example.com;
###Add this line if your website runs on HTTPS###
pagespeed FetchHttps enable;
###Set up admin location###
admin console
pagespeed Statistics on;
pagespeed StatisticsLogging on;
pagespeed StatisticsLoggingIntervalMs 60000;
pagespeed StatisticsLoggingMaxFileSizeKb 1024;
pagespeed MessageBufferSize 100000;
pagespeed LogDir /var/log/pagespeed;
pagespeed AdminPath /pagespeed_admin;
###SECURE THE LOCATION FROM BAD BOTS AND MALICOUS ACTORS###
location ~ ^/pagespeed_admin {
allow 127.0.0.1;
allow your-own-IP-address;
deny all;
}
###Specify the file cache folder that you created earlier###
pagespeed FileCachePath /etc/nginx/ngx_pagespeed_cache;
###Set the cache settings, you can play around with these numbers###
pagespeed FileCacheSizeKb 102400;
pagespeed FileCacheCleanIntervalMs 3600000;
pagespeed FileCacheInodeLimit 500000;
pagespeed LRUCacheKbPerProcess 1024;
pagespeed LRUCacheByteLimit 16384;
###OPTIONAL: use Memcached to further increase performance of pagespeed###
pagespeed MemcachedThreads 1;
pagespeed MemcachedServers "localhost:11211";
###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$" { }
###Set the most common safe filters###
pagespeed RewriteLevel CoreFilters;
ここで、新しく作成されたpagespeedディレクトリでセットアップファイルの名前を“ pagespeed-example.com.confに変更したことに気付いたかもしれません。 。」 これは、同じサーバー上で複数のWebサイトをホストしているかのように行われました。いくつかは異なるページ速度のカスタマイズを必要とするかもしれません、それでセットアップファイルを分離することはあなたのセットアップが乱雑になるのを防ぎます。
設定されたフィルターオプションは、書き換えレベルとして「CoreFilters」でした。全体として、PageSpeedは、「CoreFilters、PassThrough、 、OptimizeForBandwidth」の3つの書き換えレベルを提供します 。 元のコメントでお気づきかもしれませんが、「CoreFilters」はほとんどのWebサイトで安全であり、テストのデフォルトとして使用されます。
コアフィルターの構成:
- add_head –追加 まだ存在しない場合は、ドキュメントの要素。
- combine_css –複数のCSS要素を1つに結合します。
- combine_javascript –複数のスクリプト要素を1つに結合します。
- convert_meta_tags –http-equiv属性を持つ各メタタグの応答ヘッダーを追加します。
- extend_cache – コンテンツハッシュを使用してURLに署名することにより、他の方法では最適化されていないCSS、JS、および画像リソースのキャッシュ寿命を延長します。
- fallback_rewrite_css_urls –他の方法では解析および縮小できないCSSファイルで参照されているリソースを書き換えます。
- flatten_css_imports –すべての@importルールをフラット化することによるインラインCSS。
- inline_css –小さなCSSファイルをHTMLドキュメントにインライン化します。
- inline_import_to_link –インライン <スタイル> CSS@importsのみで構成されるタグを同等のものに変換する <リンク> タグ。
- inline_javascript –小さなJSファイルをHTMLドキュメントにインライン化します。
- rewrite_css – CSSファイルを書き換えて余分な空白とコメントを削除し、有効になっている場合は、CSSファイルで参照されている画像を書き換えるかキャッシュ拡張します。 OptimizeForBandwidthモードでは、URLを変更せずに縮小がインプレースで行われます。
- rewrite_images – 画像を最適化し、画像を再エンコードし、余分なピクセルを削除し、小さな画像をインライン化します。 OptimizeForBandwidthモードでは、URLを変更せずに縮小がインプレースで行われます。
- rewrite_javascript – JavaScriptファイルを書き換えて、余分な空白とコメントを削除します。 OptimizeForBandwidthモードでは、URLを変更せずに縮小がインプレースで行われます。
- rewrite_style_attributes_with_url – CSSにテキスト「url(」が含まれている場合は、構成済みのrewrite_cssフィルターを適用して、CSSをスタイル属性に書き換えます。
これで、さらに多くのフィルターを追加することにより、CoreFiltersをさらに増やすことができます。ただし、フィルターが多いほどWebサイトが破損するリスクが高くなるため、調査を行うことをお勧めします。以下のいくつかの追加オプションの例である、Googleのpagespeedを使用することは芸術です。
###css optimization filters###
pagespeed EnableFilters outline_css;
pagespeed EnableFilters inline_google_font_css;
pagespeed EnableFilters move_css_above_scripts;
pagespeed EnableFilters move_css_to_head;
pagespeed EnableFilters prioritize_critical_css;
###html optimization filters###
pagespeed EnableFilters combine_heads;
pagespeed EnableFilters collapse_whitespace;
pagespeed EnableFilters convert_meta_tags;
pagespeed EnableFilters elide_attributes;
pagespeed EnableFilters pedantic;
pagespeed EnableFilters remove_comments;
pagespeed EnableFilters remove_quotes;
pagespeed EnableFilters trim_urls;
###javascript optimization filters###
pagespeed EnableFilters canonicalize_javascript_libraries;
pagespeed EnableFilters defer_javascript;
###image optimization filters###
pagespeed EnableFilters dedup_inlined_images;
pagespeed EnableFilters inline_preview_images;
pagespeed EnableFilters resize_mobile_images;
pagespeed EnableFilters lazyload_images;
pagespeed EnableFilters strip_image_color_profile;
pagespeed EnableFilters strip_image_meta_data;
pagespeed EnableFilters jpeg_subsampling;
pagespeed EnableFilters convert_png_to_jpeg;
pagespeed EnableFilters resize_rendered_image_dimensions;
pagespeed EnableFilters insert_image_dimensions;
pagespeed NoTransformOptimizedImages on;
pagespeed EnableFilters sprite_images;
完了したら、 CTRL + O 保存するには、 CTRL + X 終了します。
次の行を追加し、テストして、セットアップが完了したら再起動して、これをサーバーブロックに含めます。
sudo nano /etc/nginx/sites-available/example.com.conf
次の行を追加して、フィルターを含めます。
include /etc/nginx/modules-available/pagespeed.conf;
例:

または、モジュール-利用可能からシンボリックリンクするだけです。 モジュール対応へ 、どちらのオプションも、使用するものに応じて機能します。
例:
sudo ln -s /etc/nginx/modules-available/pagespeed.conf /etc/nginx/modules-enabled/pagespeed.conf
1つの方法のみを使用することを忘れないでください。
再起動する前にNginxサーバーをテストしてください:
sudo nginx -t
Nginx構文に問題がなく、エラーがない場合は、Nginxサービスを再起動します。
sudo systemctl restart nginx
WebP変換サポート
WebPイメージを生成するには、システムに次のパッケージをインストールします。
PHP 7.4 WebPサポート:
sudo apt install imagemagick php7.4-imagick ffmpeg
PHP 8.0 WebPサポート:
sudo apt install imagemagick php8.1-imagick ffmpeg
PHP 8.1 WebPサポート:
sudo apt install imagemagick php8.1-imagick ffmpeg
PHP8.0またはPHP8.1を使用していない場合、これはDebianの標準リポジトリを使用していることを意味します。これは、次のコマンドを使用して最新のPHPビルドをインポートすることで修正できます。
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x
次に、APT更新を実行して、新しい追加を同期します。
sudo apt update
次に、前述のようにこれらのコマンドを再実行します。 PHPを大幅にアップグレードした場合は、他の設定を必ず調整してください。
ngx_pagespeedが動作可能であることを確認します
努力は報われました。次に、PageSpeedが機能しているかどうかを確認します。以下の例のように、curlコマンドを使用してこれを行います。
curl -I -p https://www.example.com
この部分は次のように出力に表示されます。
x-page-speed: 1.13.35.2-0
ngx_pagespeedをプリロード
ngx_pagespeedモジュールにはプリロード機能がありません。これは、アイテムが適切にキャッシュされて最適化されるまでに数回のアクセスが必要になる可能性があるため、イライラする可能性があります。これは、1日に数回キャッシュをパージする必要があり、Webサイトの最適化レベルを許容できないままにしてしまうと、さらに悪化する可能性があります。
ただし、ramdiskを設定している場合は、次のコマンドを入力してすべてのWebページをプリフェッチします。また、これをcronjobに設定して、将来的に1時間ごと、1日ごと、または1週間ごとに実行することもできます。
Crontab.guruにアクセスします cronタイミングの作成についてサポートが必要な場合。
pagespeed ramdiskセットアップのプリロード:
sudo wget -m -p -E -k -P /tmp/preload/ https://www.example.com/
1時間に1回のcronジョブジョブ:
00 */1 * * * wget -m -p -E -k -P /tmp/preload/ https://www.example.com/
LinuxとDebianを初めて使用する場合は、Cronを開くには次のコマンドを使用します。
sudo crontab -e
- ModPageSpeed.com –公式ドキュメントであり、おそらく最初にアクセスしてヘルプを参照する必要があるサイトです。
- PageSpeedGuide.com –PageSpeedとフィルターに関する優れた情報源。
- ngx_pagespeed Googleグループ– Nginx+PageSpeedでのすばらしいGoogleコミュニティチャット