前書き

ngx_pagespeed、または単にpagespeedは、リソースのサイズを小さくすることでクライアントのブラウザーがロードする時間を短縮することでサイトを自動的に最適化するように設計されたNginxモジュールです。 まだ詳しくない場合は、https://developers.google.com/speed/pagespeed/module/ [公式サイト]をご覧ください。

この記事では、Nginxのpagespeedモジュールのインストールと設定について説明します。 Nginxは、Apacheなどの他のWebサーバーで利用可能な_モジュールの動的ロード_をサポートしていないことを知っておくことが重要です。 Nginxはこの機能をサポートしていないため、モジュールを追加するにはソースからNginxをビルドする必要があります。

独自のカスタムパッケージを作成することには1つの欠点があります。新しいバージョンが存在する場合、それを更新する責任はお客様にあります。 ngx_pagespeedを使用する場合の長所と短所を比較検討する際に、これを考慮してください。

前提条件

このガイドは、CentOS 7用に作成されています。 リンク:/ community / tutorials / how-to-add-ngx_pagespeed-to-nginx-on-ubuntu-14-04 [Ubuntu 14.04バージョン]およびリンク:/ community / tutorials / how-to-add-ngx_pagespeed-to -nginx-on-debian-8 [Debian 8バージョン]も利用可能です。

このチュートリアルを実行する前に、次の前提条件を満たしていることを確認してください。

  • CentOS 7ドロップレット

  • 非ルートsudoユーザー(詳細については、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 [CentOS 7での初期サーバーセットアップ]をご覧ください。)

特に断りのない限り、このチュートリアルでルート権限を必要とするすべてのコマンドは、sudo権限を持つ非ルートユーザーとして実行する必要があります。

ステップ1-ソースとその依存関係のダウンロード

まず、Nginxのコンパイルとテストに必要なソフトウェアをすべて用意することから始めましょう。 次のコマンドを実行してください:

sudo yum install wget curl unzip gcc-c++ pcre-devel zlib-devel

次に、ホームディレクトリにフォルダーを作成して、Nginxのソースパッケージをダウンロードします。

mkdir ~/custom-nginx

この新しく作成されたディレクトリに変更します。

cd ~/custom-nginx

次に、このディレクトリにあるNginxソースパッケージをhttp://nginx.org/en/download.html [その公式サイト]からダウンロードします。 現在、最新バージョンは1.8.0であり、次のコマンドでダウンロードできます。

sudo wget http://nginx.org/download/nginx-1.8.0.tar.gz

その後、次のコマンドで新しくダウンロードしたパッケージを抽出します。

sudo tar zxvf nginx-1.8.0.tar.gz

同じページにいることを確認するには、フォルダー `+〜/ custom-nginx +`のコンテンツをリストします。

ls ~/custom-nginx

結果は次のようになります。

Output of ls ~/custom-nginxnginx-1.8.0  nginx-1.8.0.tar.gz

ご覧のとおり、このチュートリアルを書いている時点では、Nginxソースパッケージのバージョンは1.8.0です。 ngx_pagespeedモジュールの追加を開始するには、まず、抽出されたフォルダー `+ nginx-1.8.0 `内の ` modules +`フォルダーに移動する必要があります。

cd nginx-1.8.0/src/http/modules/

このディレクトリで、次のコマンドを使用してhttps://github.com/pagespeed/ngx_pagespeed[Github repository]から最新のngx_pagespeedソースアーカイブをダウンロードします。

sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip

ダウンロードが完了したら、次のような `+ unzip +`ユーティリティを使用して解凍します。

sudo unzip master.zip

これにより、 `〜/ custom-nginx / nginx-1.8.0 / src / http / modules / +`ディレクトリ内に ` ngx_pagespeed-master `という新しいディレクトリが作成されます。 便宜上、次のコマンドを使用して、このディレクトリの名前を「 ngx_pagespeed +」に変更します。

sudo mv ngx_pagespeed-master ngx_pagespeed

新しい `+ ngx_pagespeed +`ディレクトリ内に移動します。

cd ngx_pagespeed

そこから、コンパイルに必要なPageSpeed Optimization Libraries(psol)をダウンロードします。

sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.6.tar.gz

この記事を読んでいるときにpsolアーカイブへのリンクが機能しない場合は、この手順をスキップしてください。 次のステップでのコンパイル中にライブラリーが欠落している場合、パッケージを後で取得する方法の更新された指示とともにエラーが表示されます。

最後に、 `+〜/ custom-nginx / nginx-1.4.6 / debian / modules / ngx_pagespeed +`ディレクトリ内でpsolパッケージを抽出します。

sudo tar -xzvf 1.9.32.6.tar.gz

手順2-ソースの構成とコンパイル

この時点で、Nginxソースを設定し、pagespeedモジュールを含める準備ができました。 Nginxソースの親ディレクトリに移動します。

cd ~/custom-nginx/nginx-1.8.0/

次のコマンドでソースの構成を実行します。

sudo ./configure --add-module=/home//custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/ --user=nobody --group=nobody --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid

上記の最も重要な設定オプションは、「+-add-module = / home // custom-nginx / nginx-1.8.0 / src / http / modules / ngx_pagespeed / +」です。 これにより、pagespeedモジュールがNginxコンパイルの一部になります。 このパスのユーザーに必ず置き換えてください。

便宜上、ログファイルの場所やサーバーを実行するユーザー/グループなど、いくつかの他の設定をカスタマイズしました。 カスタマイズ可能な内容の詳細については、https://www.nginx.com/resources/wiki/start/topics/tutorials/installoptions/ [コンパイル時オプション]のドキュメントを確認してください。

構成が完了したら、次のコマンドを使用してコンパイルを開始します。

sudo make

液滴のリソースに応じて、これには最大10分かかります。 その後、次のコマンドでソフトウェアをインストールできます。

sudo make install

カスタムNginxは、ディレクトリ `+ / usr / local / nginx +`にインストールされています。 さらに便利にするために、2つのシンボリックリンクを作成しましょう。 最初に構成ファイルについて:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

このコマンドにより、通常は設定ファイルが存在する `+ / etc / nginx / +`ディレクトリで設定ファイルを見つけることができます。

また、より簡単に見つけて起動スクリプトに含めることができるように、 `+ / usr / sbin / +`ディレクトリにメインバイナリへのシンボリックリンクを作成する必要があります。 これは、後で使用するスタートアップスクリプトにも必要です。 この目的のために、次のコマンドを実行します。

sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

ステップ3-起動スクリプトを作成する

前のインストールプロセスでは、Nginxが実行される必要なnobodyユーザーとグループの作成など、ありふれたタスクを処理します。 ただし、手動で起動スクリプトを作成する必要があります。 幸いなことに、CentOS 7のNginxについては、https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/ [nginx.com]で既に入手可能です。

最初に、ディレクトリ `+ / etc / init.d / +`に新しいファイルを作成します:

sudo nano /etc/init.d/nginx

次に、https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/に移動し、スクリプトをコピーして、この新しいファイルに貼り付けます。

最後に、次のコマンドを実行して、このスクリプトを実行可能にします。

sudo chmod +x /etc/init.d/nginx

その後、次のコマンドでNginxを初めて起動できます。

sudo service nginx start

NginxがDropletで毎回起動および停止することを確認するには、次のコマンドでデフォルトのランレベルに追加します:

sudo chkconfig nginx on

ステップ4-Pagespeedモジュールを有効にする

これで、Nginxがインストールされました。 次のステップは、ngx_pagespeedモジュールを有効にすることです。

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

sudo mkdir -p /var/ngx_pagespeed_cache

Webサーバーがファイルを保存できるように、このフォルダーの所有権をNginxユーザーに変更してください。

sudo chown -R nobody:nobody /var/ngx_pagespeed_cache

次に、お気に入りのテキストエディターでメインのNginx設定ファイル `+ nginx.conf +`を次のように開きます。

sudo nano /etc/nginx/nginx.conf

このファイルで、次の行を「+ server +」ブロックに追加し、変更を保存します。

/etc/nginx/nginx.conf

##
# Pagespeed main settings

pagespeed on;
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 ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }

これらの行はブロック内のどこにでも追加できますが、この例では、ブロックの最後に追加しています。

これは `+ / etc / nginx / nginx.conf`ファイルがどのように見えるかです:

/etc/nginx/nginx.conf

...
http {
   include       mime.types;
   default_type  application/octet-stream;

   #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
   #                  '$status $body_bytes_sent "$http_referer" '
   #                  '"$http_user_agent" "$http_x_forwarded_for"';

   #access_log  logs/access.log  main;

   sendfile        on;
   #tcp_nopush     on;

   #keepalive_timeout  0;
   keepalive_timeout  65;

   #gzip  on;

   server {
       listen       80;
       server_name  localhost;

       #charset koi8-r;

       #access_log  logs/host.access.log  main;














       location / {
           root   html;
           index  index.html index.htm;
       }
...

また、あなたが持っているかもしれない追加の `+ server +`ブロックファイルに_pagespeedの設定行を必ず追加してください。

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

sudo service nginx restart

手順5-インストールのテスト

ngx_pagespeedモジュールが正常にインストールされたかどうかを確認するには、次のようにNginxバイナリを実行します。

sudo /usr/sbin/nginx -V

インストールが成功した場合、他のカスタム引数の中にngx_pagespeedモジュールがリストされているはずです。

Outputnginx version: nginx/1.8.0
...
configure arguments: --add-module=/home//custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/
...

上記のことは、まだページ速度が有効であり、サイトで機能しているという意味ではありません。 これを確認するには、クライアント側のURL転送用のツールおよびライブラリである `+ curl `を使用できます。 これで、次のような ` X-Page-Speed +`ヘッダーを確認します。

curl -I -p http://localhost| grep X-Page-Speed

ngx_pagespeedモジュールが正常に機能する場合、出力とともにバージョンとともに表示されるはずです。

OutputX-Page-Speed: 1.9.32.6-7321

このヘッダーが表示されない場合は、前の手順の手順に従ってページ速度が有効になっていることを確認してください。

結論

これが、カスタムモジュール、pagespeedでNginxを構築する方法です。 これらの手順は、Nginxでまだ利用できない他のモジュールに有効です。 さらに、ソースからパッケージをインストールするプロセス全体は、カスタマイズが必要な他のソフトウェアパッケージと同様です。 新しいバージョンがある場合は、これらのパッケージを自分で保守して再インストールする必要があることを忘れないでください。