序章

ngx_pagespeed、または単にpagespeedは、リソースのサイズを縮小し、クライアントのブラウザがサイトを読み込む必要がある時間を短縮することで、サイトを自動的に最適化するように設計されたNginxモジュールです。 まだご存じない方は、公式サイトをご確認ください。

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

独自のカスタムパッケージを使用することには、1つの欠点があります。新しいバージョンがある場合は、それを更新する責任はユーザーが単独で負うことになります。 ngx_pagespeedを使用することの長所と短所を比較検討するときは、これを考慮に入れてください。

前提条件

このガイドはCentOS7用に作成されています。 Ubuntu14.04バージョンDebian8バージョンも利用できます。

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

  • CentOS7ドロップレット
  • ルート以外のsudoユーザー(詳細については、 CentOS 7 を使用した初期サーバーセットアップを確認してください。)

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

ステップ1—ソースとその依存関係をダウンロードする

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

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

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

  1. mkdir ~/custom-nginx

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

  1. cd ~/custom-nginx

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

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

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

  1. sudo tar zxvf nginx-1.8.0.tar.gz

同じページにいることを確認するには、フォルダの内容を一覧表示します ~/custom-nginx:

  1. ls ~/custom-nginx

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

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

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

  1. cd nginx-1.8.0/src/http/modules/

このディレクトリで、次のコマンドを使用して、Githubリポジトリから最新のngx_pagespeedソースアーカイブをダウンロードします。

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

ダウンロードが完了したら、 unzip このようなユーティリティ:

  1. sudo unzip master.zip

これにより、という新しいディレクトリが作成されます ngx_pagespeed-master あなたの中に ~/custom-nginx/nginx-1.8.0/src/http/modules/ ディレクトリ。 便宜上、このディレクトリの名前を ngx_pagespeed コマンドで:

  1. sudo mv ngx_pagespeed-master ngx_pagespeed

新しい中に入る ngx_pagespeed ディレクトリ:

  1. cd ngx_pagespeed

そこから、コンパイルに必要なPageSpeed最適化ライブラリ(psol)をダウンロードします。

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

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

最後に、psolパッケージを内部に抽出します ~/custom-nginx/nginx-1.4.6/debian/modules/ngx_pagespeed ディレクトリ:

  1. sudo tar -xzvf 1.9.32.6.tar.gz

ステップ2—ソースを構成してコンパイルする

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

  1. cd ~/custom-nginx/nginx-1.8.0/

次に、次のコマンドを使用してソースの構成を実行します。

  1. sudo ./configure --add-module=/home/your_user/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/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/. これにより、pagespeedモジュールがNginxコンパイルの一部になることが保証されます。 このパスでは、必ずyour_userをユーザーに置き換えてください。

便宜上、ログファイルの場所やサーバーを実行するユーザー/グループなど、他のいくつかの設定をカスタマイズしました。 カスタマイズできるものの詳細については、コンパイル時オプションのドキュメントを確認してください。

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

  1. sudo make

ドロップレットのリソースにもよりますが、これには最大10分かかります。 その後、次のコマンドでソフトウェアをインストールできます。

  1. sudo make install

ディレクトリにインストールされているカスタムNginxを見つけることができます /usr/local/nginx. さらに便利にするために、2つのシンボリックリンクを作成しましょう。 まず、構成ファイルについて:

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

このコマンドを使用すると、構成ファイルを検索できます。 /etc/nginx/ 通常、構成ファイルが存在するディレクトリ。

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

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

ステップ3—スタートアップスクリプトを作成する

前のインストールプロセスは、Nginxが実行される必要なnobodyユーザーとグループの作成など、いくつかのありふれたタスクを処理します。 ただし、手動で起動スクリプトを作成する必要があります。 幸い、CentOS 7のNginxには、nginx.comですぐに利用できるものがすでにあります。

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

  1. sudo nano /etc/init.d/nginx

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

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

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

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

  1. sudo service nginx start

ドロップレットを使用してNginxが毎回開始および停止するようにするには、次のコマンドを使用してデフォルトのランレベルに追加します。

  1. sudo chkconfig nginx on

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

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

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

  1. sudo mkdir -p /var/ngx_pagespeed_cache

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

  1. sudo chown -R nobody:nobody /var/ngx_pagespeed_cache

次に、メインのNginx構成ファイルを開きます nginx.conf このようなお気に入りのテキストエディタで:

  1. 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;

        ##
        # 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" { }

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

また、すべての追加にpagespeed構成行を追加してください server あなたが持っているかもしれないブロックファイル。

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

  1. sudo service nginx restart

ステップ5—インストールをテストする

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

  1. sudo /usr/sbin/nginx -V

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

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

上記は、pagespeedが有効になっていて、サイトで機能することをまだ意味していません。 これを確認するには、 curl、クライアント側のURL転送用のツールとライブラリ。 それでチェックしてください X-Page-Speed このようなヘッダー:

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

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

Output
X-Page-Speed: 1.9.32.6-7321

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

結論

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