序章


ngx_pagespeed は、インターネットブラウザがWebページをロードするのにかかる時間を短縮することでWebサイトを高速化するためにnginx Webサーバーに追加されるモジュールです– https://developers.google.com/speed/pagespeed/module “target =” _ blank ”>詳細な技術情報については、ここをクリックしてください。

カスタムnginxパッケージの構築


Nginx は、「モジュールの動的ロード」と呼ばれるものをサポートしていません。これにより、基本的に、インストール後にプラグインまたはモジュールをソフトウェアに自由に追加できます。 ちなみに、これはnginxのバグや開発者の欠点ではありません。 ただし、このチュートリアルの範囲外の利点があります。 したがって、モジュールをnginxに追加する唯一の方法は、コンパイル時にモジュールを追加することです。 このチュートリアルでは、Debian wheezyバックポートソースからビルドしてngx_pagespeedモジュールをnginxに追加します。これは、Debianバックポートリポジトリには、このチュートリアルバージョン1.4.4の執筆時点での安定したリポジトリよりも新しいnginxバージョンがあるためです。 。 Debianバックポートの詳細については、backports.debian.orgの公式ページにアクセスしてください。

最初に:Debianwheezyバックポートリポジトリを追加します


デフォルトでは、Debian wheezyはシステムにバックポートリポジトリを含まないため、次の手順に従って自分で追加する必要があります。

  • システムのお気に入りのテキストエディタで「sources.list」ファイルを開きます。
 sudo vim /etc/apt/sources.list
  • Debianバックポートリポジトリを指す次の2行を、最後のエンドファイルに追加します(それぞれが別々の行に挿入されていることを確認してください)。
[…]deb http://ftp.uk.debian.org/debian  wheezy-backports main deb-src  http://ftp.uk.debian.org/debian [ X119X] wheezy-backports main 
  • Debianリポジトリパッケージリストを更新します。
 sudo apt-get update 

ヒント

英国のミラーを自分に最も近いミラーと交換できます。 すべてのDebianミラーのリストについては、 http: //www.debian.org/mirror/list “target =” _ blank ”>ここをクリックしてください

2番目:nginxバックポートソースパッケージをダウンロードして依存関係を構築する


システムにバックポートリポジトリを追加したので、次はnginxバックポートソースパッケージをダウンロードします。 ただし、その前に、カスタムnginxパッケージの構築に役立ついくつかの前提条件パッケージをダウンロードしてインストールする必要があります。

  • 名前が示すように、システム上でDebianパッケージをビルドするために不可欠なDebianエッセンシャルビルドパッケージをインストールします。
 sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip 
  • バックポートリポジトリからnginxビルドの依存関係をインストールします。 また、バックポートリポジトリはデフォルトで非アクティブ化されているため、aptに明示的に指定する必要があります。
 sudo apt-get -t wheezy-backports build-dep nginx 

前提条件を満たしたので、バックポートリポジトリからnginxソースパッケージのダウンロードを開始できます。

  • まず、ホームディレクトリにnginxソースパッケージをダウンロードするフォルダを作成しましょう。
 cd〜mkdir custom-nginx-1.4.4 #または任意のフォルダー名を選択してください cd custom-nginx-1.4.4 
  • nginxパッケージソースをダウンロードします。
 sudo apt-get -t wheezy-backports source nginx 

3番目:nginxソースパッケージを準備して変更します


ソースパッケージをダウンロードしたフォルダの内容を一覧表示してみましょう。

 ls -la 

3つのファイルと、ファイルが抽出されたフォルダーである1つのフォルダーが表示されます。

写真でわかるように、このチュートリアルを書いている時点では、nginxバックポートソースパッケージのバージョンは1.4.4です。 ngx_pagespeedモジュールの追加を開始するには、最初に、抽出されたフォルダー「nginx-1.4.4」内のモジュールフォルダーに移動する必要があります。

 cd nginx-1.4.4 / debian / modules 

モジュールフォルダーに移動したら、次のコマンドラインを実行します(ngx https://github.com/pagespeed/ngx_pagespeed “target =” _blankから引用) ”>公式ページ; したがって、続行する前に、必ず新しいバージョンがリリースされているかどうかを確認してください):

 wget  https://github.com/pagespeed/ngx_pagespeed/archive/v1.7.30.1-beta.zip  unzip v1.7.30.1-beta.zip cd ngx_pagespeed-1.7.30.1- beta / wget  https://dl.google.com/dl/page-speed/psol/1.7.30.1.tar.gz  tar -xzvf 1.7.30.1.tar.gz 

これで、ngx_pagespeedモジュールがnginxソースパッケージのモジュールフォルダーに正常に追加され、他のnginxモジュールでビルドできるようになりました。 しかし、それを行う前に、完了する必要のある2つの重要なステップがあります。

  • debianフォルダにあるrulesファイルを編集します。
 sudo vim〜/ custom-nginx-1.4.4 / nginx-1.4.4 / debian / rules 

このファイルには、4つのconfig.statusブロック(config.status.full、config.status.light、config.status.extras、config.status.naxsi)があります。 それらの各ブロックは(CONFIGURE_OPTS)>@で終わります。 あなたがしなければならないのは追加することだけです --add-module=$(MODULESDIR)/ngx_pagespeed-1.7.30.1-beta \ (CONFIGURE_OPTS)> @ 行の直前の4つのブロックのそれぞれに、変更を保存します。

  • ソースパッケージのバージョンを増やします。これは、後でパッケージを固定するのに役立ちます。 これを実現するには、changelogファイルをテキストエディタで開きます。
 sudo vim〜/ custom-nginx-1.4.4 / nginx-1.4.4 / debian / changelog 

変更ログファイルの最初の行は、現在のパッケージバージョン(1.4.4-1〜bpro70 + 1)とディストリビューション(wheezy-backports)を表しており、ハイフンを前に付けたバージョン番号の最後にニックネームなどを追加するだけです。 :

4番目:カスタムnginxパッケージをビルドします


次に、ngx_pagespeedモジュールを含むカスタムパッケージを作成します。 ただし、このパッケージの作成には少なくとも10分かかるため(マシンの速度によって異なります)、 Screen というアプリケーションを使用します。これは、通常のターミナルウィンドウ内の単なるターミナルです。 ただし、通常のターミナルとは異なり、screenは、接続が失われた後も、現在のシェルセッションで実行されているプロセスを存続させます。 これは、パッケージの構築中にシェルセッションへの接続が失われた場合(特に時間がかかるもの)、最初からやり直す必要がないことを意味します。 画面の使用方法の詳細については、この素晴らしいチュートリアル「インストールと使用-screen-on-an-ubuntu-cloud-server “target =”_blank」をお読みください。 ”>ここ

「スクリーンセッション」を作成したら、パッケージの作成を開始しましょう。

 cd〜/ custom-nginx-1.4.4 / nginx-1.4.4 sudo dpkg-buildpackage -b 

これで、ストレッチ中にパッケージ構築ツールに機能を任せることができます。

コマンドプロンプトが再び表示されると、ビルドプロセスが終了したことがわかります。 これで、生成されたパッケージはソースパッケージフォルダーのすぐ外に配置されます。

 cd〜/ custom-nginx-1.4.4 ls -la 

次のようなものが表示されます。

 @debian  -lab2 ::〜/ custom-nginx-1.4.4#ls -la total 72052 drwxr-xr-x 3 root root 4096 Dec2813:35。 drwxr-xr-x 4 root root 4096 Dec 27 03:51…drwxr-xr-x 10 root root 4096 Dec 28 13:34 nginx-1.4.4 -rw-r–r-- 1 root root 78168 Dec 28 13: 34 nginx-common_1.4.4-1〜bpo70 + 1-custom_all.deb -rw-r–r--1ルートルート79988Dec 28 13:34 nginx-doc_1.4.4-1〜bpo70 + 1-custom_all.deb -rw -r–r--1ルートルート26144390Dec 28 13:35 nginx-extras-dbg_1.4.4-1〜bpo70 + 1_amd64.deb -rw-r–r--1ルートルート3481982Dec 28 13:35 nginx-extras_1 .4.4-1〜bpo70 + 1-custom_amd64.deb -rw-r–r-- 1 root root 24335692 Dec 28 13:35 nginx-full-dbg_1.4.4-1〜bpo70 + 1-custom_amd64.deb -rw-r –r--1ルートルート3286600Dec 28 13:35 nginx-full_1.4.4-1〜bpo70 + 1-custom_amd64.deb -rw-r–r--1ルートルート3618406Dec 28 13:35 nginx-light-dbg_1 .4.4-1〜bpo70 + 1-custom_amd64.deb -rw-r–r--1ルートルート3049594Dec 28 13:35 nginx-light_1.4.4-1〜bpo70 + 1-custom_amd64.deb -rw-r–r --1ルートルート3796392Dec28 13:35 nginx-naxsi-dbg_1.4.4-1〜bpo70 + 1-custom_amd64.deb -rw-r–r--1ルートルート356138Dec 28 13:34 nginx-naxsi-ui_1 .4.4-1〜bpo70 + 1-custom_all.deb -rw-r–r--1ルートルート 3092638 Dec 28 13:35 nginx-naxsi_1.4.4-1〜bpo70 + 1-custom_amd64.deb -rw-r–r-- 1 root root 1570640 Nov 28 12:07 nginx_1.4.4-1〜bpo70+1.debian。 tar.gz -rw-r–r--1ルートルート2843Nov 28 12:07 nginx_1.4.4-1〜bpo70 + 1.dsc -rw-r–r--1ルートルート66716Dec 2813:34nginx_1。 4.4-1〜bpo70 + 1-custom_all.deb -rw-r–r--1ルートルート4922Dec 28 13:35 nginx_1.4.4-1〜bpo70 + 1-custom_amd64.changes -rw-r–r-- 1ルートルート76821711月21日10:28nginx_1.4.4.orig.tar.gz

5番目:カスタムnginxパッケージをインストールします


これで、インストールするnginxパッケージを選択するだけです。 それぞれにパックされたモジュールの数だけが異なる4つがあります。 https://wiki.debian.org/Nginx”target =”_blankを見つけることができます ”>ここで違いに関する詳細情報。 フルバージョンを選択して、次のようにインストールします。

 sudo dpkg -i nginx-full_1.4.4-1〜bpo70 + 1-custom_amd64.deb nginx-common_1.4.4-1〜bpo70 + 1-custom_all.deb nginx_1.4.4-1〜bpo70 + 1-custom_all.deb 

お気づきかもしれませんが、「nginx-full_1.4.4-1〜bpo70+1-custom_amd64.deb」の横にさらに2つの.debパッケージをインストールします。 これら2つはパッケージの依存関係であり、4つのnginxパッケージ(full、light、extras、naxsi)のいずれかに沿ってインストールする必要があります。

次のエラーメッセージが表示された場合:

 dpkg:依存関係の問題によりnginx-commonの構成が妨げられます:nginx-commonはinit-system-helpers(> = 1.11〜)に依存します。 ただし、パッケージinit-system-helpersはインストールされていません。 […]

または、前のコマンドを実行した後の依存関係の問題に関するエラーメッセージが表示されたら、次のコマンドを実行します。

 sudo apt-get -f install 

これにより、発生している可能性のある依存関係の問題が修正され、以前に中断されたインストールが再開されます。

最後に、ngx_pagespeedモジュールがnginxパッケージで正常にインストールされたかどうかを確認します。

 sudo nginx -V 

インストールが成功すると、他のモジュールの中でngx_pagespeedモジュールが一覧表示されます。

 root  @debian  -lab2:〜/ shared#nginx -V nginxバージョン:nginx / 1.4.4 TLS SNIサポートが有効な構成引数:-prefix = / usr / share / nginx --conf -path = / etc / nginx / nginx.conf –error-log-path = / var / log / nginx / error.log --http-client-body-temp-path = / var / lib / nginx / body –http -fastcgi-temp-path = / var / lib / nginx / fastcgi --http-log-path = / var / log / nginx / access.log –http-proxy-temp-path = / var / lib / nginx / proxy --http-scgi-temp-path = / var / lib / nginx / scgi –http-uwsgi-temp-path = / var / lib / nginx / uwsgi --lock-path = /var/lock/nginx.lock- -pid-path = / run / nginx.pid –with-pcre-jit –with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module –with-http_gzip_static_module --with-http_image_filter_module –with-http_realip_module – with-http_stub_status_module --with-http_ssl_module –with-http_sub_module --with-http_xslt_module –with-ipv6 --with-mail --with-mail_ssl_module –add-module = / root / custom-nginx-1.4.4 / nginx-1.4 .4 / debian / modules / nginx-upload-progress –add-module = / root / custom-ngin  x-1.4.4 / nginx-1.4.4 / debian / modules / nginx-auth-pam –add-module = / root / custom-nginx-1.4.4 / nginx-1.4.4 / debian / modules / nginx-dav -ext-module –add-module = / root / custom-nginx-1.4.4 / nginx-1.4.4 / debian / modules / nginx-echo –add-module = / root / custom-nginx-1.4.4 / nginx -1.4.4 / debian / modules / nginx-upstream-fair –add-module = / root / custom-nginx-1.4.4 / nginx-1.4.4 / debian / modules / ngx_http_substitutions_filter_module –add-module = / root / custom -nginx-1.4.4 / nginx-1.4.4 / debian / modules / ngx_pagespeed-1.7.30.1-beta 

6番目:ngx_pagespeedモジュールを有効にする


モジュールを有効にする前に、Webサイトのファイルを次の場所にキャッシュするフォルダーを作成する必要があります。

sudo mkdir -p / var / ngx_pagespeed_cache

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

次に、お気に入りのテキストエディタで「nginx.conf」ファイルを開きます

 sudo vim /etc/nginx/nginx.conf 

そして、 http ブロックに次の行を追加して、変更を保存します。

###ngx_pagespeedモジュール設定

ページスピードオン; pagespeed FileCachePath / var / ngx_pagespeed_cache;

「nginx.conf」ファイルは次のようになります。

次に、変更を有効にするためにnginxサーバーを再起動します。

 sudo service nginx restart 

ngx_pagespeedモジュールが正常に有効になったことを確認するには、次のコマンドを実行します。

 sudo apt-get install curl curl -I -p  http:// localhost | grep  X-Page-Speed 

あなたはそれから見るべきです X-Page-Speed 出力のヘッダー:

最後に、次の行をWebサイトの仮想ホストファイルのすべてのサーバーブロックに追加します。 /etc/nginx/sites-available :

#pagespeedに最適化されたリソースのリクエストがpagespeedに送られるようにする

ハンドラーと無関係なヘッダーは設定されません。

location〜“ .pagespeed。([az]。)?[az]{2}。[^。]{10}。[^。]+” {add_header“”“”; } location〜“ ^ / ngx_pagespeed_static /” {} location〜“ ^ / ngx_pagespeed_beacon” {} location / ngx_pagespeed_statistics {allow 127.0.0.1; すべてを拒否します。 } location / ngx_pagespeed_global_statistics {allow 127.0.0.1; すべてを拒否します。 } location / ngx_pagespeed_message {allow 127.0.0.1; すべてを拒否します。 } location / pagespeed_console {allow 127.0.0.1; すべてを拒否します。 }

最後に:カスタムnginxパッケージを固定します


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

  • /etc/apt/preferences.dに新しいファイルを作成します。
 sudo vim /etc/apt/preferences.d/nginx 
  • 次に、次の行を貼り付けて保存します[ピンバージョンを以前に設定したカスタムバージョンに置き換えてください]。
パッケージ:nginxピン:バージョン1.4.4-1〜bpo70 + 1-カスタムピン-優先度:1001 

免責事項

独自のカスタムパッケージを使用することには、セキュリティの脆弱性にパッチが適用されるたびにそれを更新する責任を単独で負うという1つの欠点があります。 つまり、「apt-get upgrade」を実行するだけでは、すでにピン留めされているため、パッケージには何の影響もありません。 したがって、新しいセキュリティアップデートがリリースされているかどうかを定期的に確認してください。

提出者:Saleh Salem