GNU/Linux >> Linux の 問題 >  >> Debian

Debian11BullseyeにNginxGooglePagespeedをインストールする方法

GoogleのPageSpeedモジュール 、はmod_PageSpeedとも呼ばれ、オープンソースのApache HTTPまたはNginxサーバーレベルパッケージであり、サーバーのスタイルシート、JavaScript、HTMLファイルおよび画像を最適化するページへのさまざまなフィルターを使用してサイトを最適化するのに役立ちます。機能。

次のチュートリアルでは、Debian11BullseyeにNginxPagespeedをインストールして基本的なセットアップを行う方法を学習します。

Debianシステムの更新

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バージョンをインポートしてインストールすることを強くお勧めします。

Nginxはメインラインバージョンの使用を推奨していますが、安定版はそれほどアップグレードしたくないユーザーにも同様に適しています。

両方ではなく、1つのリポジトリのみをインポートします。

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ソースをダウンロードする前に、これをインポートして追加する必要があります。そうしないと、間違ったバージョンが取得されます。

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つの異なる方法で実行できます。両方を以下にリストします。

オプション2.安定したngx_pagespeedをダウンロード

新しくクローンされた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
オプション2.プレリリースngx_pagespeedをダウンロード

プレリリースの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
PageSpeedのコミュニティリソース
  • ModPageSpeed.com –公式ドキュメントであり、おそらく最初にアクセスしてヘルプを参照する必要があるサイトです。
  • PageSpeedGuide.com –PageSpeedとフィルターに関する優れた情報源。
  • ngx_pagespeed Googleグループ– Nginx+PageSpeedでのすばらしいGoogleコミュニティチャット

Debian
  1. Debian9にNginxをインストールする方法

  2. Debian 8にNginxをインストールする方法(Jessie)

  3. Debian 9にNginxをインストールする方法(ストレッチ)

  1. Docker EngineをDebian11にインストールする方法(Bullseye)

  2. Debian11にNginxをインストールする方法

  3. Debian10にLEMPスタックをインストールする方法

  1. Debian 11にDockerをインストールする方法(Bullseye)

  2. Debian11BullseyeにNginxを使用してphpMyAdminをインストールする方法

  3. Debian11BullseyeにTeamViewerをインストールする方法