CentOS7にmod_deflateをインストールして設定する方法
序章
Mod_deflateは、クライアントに送信する前にWebサーバーからの出力を圧縮できるようにするApacheモジュールです。 サイトコンテンツのサイズが圧縮されると、そのサイズは小さくなり、クライアントはそれをより速くダウンロードできるようになります。 これは、帯域幅が狭いクライアントにとって価値があるだけでなく、サイトのパフォーマンスとそのページランクを評価するときに検索エンジンによって考慮されます。
コンテンツの圧縮に加えて、mod_deflateは非圧縮の目的にも使用できます。 この手法は、Apacheをリバースプロキシとして使用し、プロキシを通過するコンテンツをさらに処理する場合に適用できます。 ただし、この手法の用途は非常に限られています。 圧縮にmod_deflateを使用することに焦点を当てていきます。
前提条件
このガイドはCentOS7でテストされています。 モジュールのインストールと構成はOSまたはOSのバージョンに依存しませんが、構成ファイルの場所はOSとそのバージョンによって異なる場合があります。
また、Apache2.4.0以降を実行していることも前提としています。 Apacheをインストールするには、CentOSの記事にLinux、Apache、MySQL、PHP(LAMP)スタックをインストールする方法のステップ1に従ってください。
このチュートリアルのすべてのコマンドは、root以外のユーザーとして実行する必要があります。 コマンドにrootアクセスが必要な場合は、その前に sudo
. まだセットアップしていない場合は、次のチュートリアルに従ってください: CentOS7でのサーバーの初期セットアップ。
インストール
Mod_deflateは、CentOS7のデフォルトのApacheインストールに含まれていて有効になっています。 この実行を確認するには apachectl
、Apache Server Control Interface、および出力を次のようにフィルタリングします grep
キーワードの deflate
このような:
- apachectl -t -D DUMP_MODULES |grep deflate
君は見るべきだ deflate_module (shared)
mod_deflateがインストールされ、有効になっている場合。 これが表示されない場合は、次のトラブルシューティング手順に従ってください。
- モジュールファイルがインストールされていることを確認します。 このファイルはコアの一部です
httpd
前述の前提条件に従ってすでにインストールされているはずのパッケージ。 デフォルトでは、/etc/httpd/modules/mod_deflate.so
. また、Webサーバーはこのファイルを開くことができるはずです。 この目的のためにmod_deflate.so
755などの誰でも読み取り可能な権限が必要です。 - モジュールがロードされているかどうかを確認します。 Apache基本モジュール構成ファイルを開きます
/etc/httpd/conf.modules.d/00-base.conf
この行が存在し、コメントアウトされていないことを確認してください。
LoadModule deflate_module modules/mod_deflate.so
注: Apacheの構成を変更する必要がある場合は、Apacheを再起動することを忘れないでください。 再起動コマンドは sudo apachectl restart
.
構成
mod_deflateの使用を開始するには、圧縮するファイルの種類を指定する必要があります。 一方では、プレーンテキスト形式は圧縮によってサイズを大幅に縮小できるため、HTML、CSS、またはJavaScriptファイルに適用するのが理にかなっています。 一方、Flashや画像などの多くのマルチメディア形式にはすでに圧縮が含まれており、追加の圧縮は無駄になります。
mod_deflateを構成するには、新しい構成ファイルを作成します /etc/httpd/conf.d/mod_deflate.conf
サンプルコード付き:
<filesMatch "\.(js|html|css)$">
SetOutputFilter DEFLATE
</filesMatch>
上記のコードは、ファイルが拡張子と一致する場合を意味します .js
, .html
また .css
標準のApacheを介して圧縮(収縮)されます SetOutputFilter
指令。 あなたのサイトにある他の同様のテキストファイル拡張子を追加することができます。 .txt
.
注:上記のコードをメイン構成ファイルに配置できます /etc/httpd/conf/httpd.conf
. ただし、このような特定の構成部分を別のファイルに分けることをお勧めします。 CentOS 7のこの目的のために、拡張子が .conf
ディレクトリに配置 /etc/httpd/conf.d/
ディレクティブのおかげで自動的にロードされます IncludeOptional conf.d/*.conf
メインのApache構成ファイルの最後にあります。
さらに、mod_deflateには、独自の重要な構成オプションがいくつかあります。
DeflateCompressionLevel
-適用される圧縮レベル。 デフォルトでは、このレベルは9で、最高レベルの圧縮です。 1は最小レベルの圧縮です。 圧縮率を高くすると、サーバーのCPU使用率が高くなる代わりに、出力が最小になります。DeflateMemLevel
-圧縮ライブラリであるzlibが使用できるメモリの量。 デフォルト値は9で、これも最高値です。 許可されたメモリを正確に計算するには、DeflateMemLevel
16Kによる値。DeflateWindowSize
-圧縮ウィンドウのサイズ。 デフォルトでは、15の可能な最高値です。 数値が大きいほど圧縮レベルが高くなりますが、サーバーリソースが増えます。
ほとんどの場合、上記の値はデフォルトのままにしておくことができます。 ただし、mod_deflateを使用した後にサーバーのパフォーマンスが大幅に低下したと思われる場合は、構成ファイルでより低い値を構成します。 /etc/httpd/conf.d/mod_deflate.conf
このような:
DeflateCompressionLevel 1
上記の場合、圧縮レベルが下がり、ファイルが大きくなります。 ただし、mod_deflateはこの方法で使用するCPUが少なくなります。 このような変更を適用する場合は、必ずApacheを再起動してください。
テスト
mod_deflateをテストするにはさまざまな方法がありますが、最も簡単な方法は、非対話型ネットワークダウンローダーであるwgetを使用することです。 CentOS 7ドロップレットにまだインストールされていない場合は、コマンドを使用してインストールできます sudo yum install -y wget
.
テストには、少なくとも数百KBのテキストファイルが必要です。このファイルは、圧縮すると小さくなります。 このようなファイルが手元にない場合は、人気のあるJavaScriptライブラリであるJQueryをダウンロードしてサイトにアップロードできます。 ファイルを配置する場所がわからない場合は、Apacheのデフォルトのドキュメントルートにアップロードするだけです。 /var/www/html/
CentOS7で。 したがって、ファイルはデフォルトサイトのルートディレクトリで利用できるようになります。
注: mod_deflateが出力を圧縮するには、クライアント(通常はブラウザー)が圧縮をサポートしている必要があります。 クライアントが圧縮をサポートしていない場合、ファイルはそのまま送信されます。
サンプルテストファイルがサイトにアップロードされたら、次のコマンドでダウンロードします。 wget
. このテストは、ローカルマシンまたはドロップレットから実行できます。 このような:
- wget --header="Accept-Encoding: gzip" http://<your_server_ip>/jquery-1.11.3.js
上記の例では、 jquery-1.11.3.js
Apacheサーバーからのファイル。 圧縮を利用するために、余分なものを渡します wget
ヘッダー引数 Accept-Encoding: gzip
.
上記の方法でダウンロードした場合、ファイル jquery-1.11.3.js
83KBである必要があります。 実際のところ、これは元のJavaScriptファイルとまったく同じではなく、クライアントによって追加で抽出される必要があるため、クライアント側でもオーバーヘッドが発生します。 ただし、ネットワークを介して転送されるサイズは、元のファイル(278K)の3分の1よりも小さい83KBにすぎません。
ダウンロードしたファイルのサイズをLinuxコマンドで確認し、ディレクトリの内容を一覧表示することで、上記の計算を確認できます。 ls
このような:
- ls -lah jquery-1.11.3.js
- -rw-r--r-- 1 user user 83K Apr 28 12:20 jquery-1.11.3.js
次に、結果をサイトの元のファイルと再度比較できます。 ls
指図:
- ls -lah /var/www/html/jquery-1.11.3.js
- -rw-r--r-- 1 apache apache 278K Apr 28 12:20 /var/www/html/jquery-1.11.3.js
結論
この記事とJQueryライブラリの実際の例からわかるように、Mod_deflateは、サイトに必要な帯域幅を大幅に減らすのに役立ちます。 サイトの最適化をさらに続行するには、 Apacheコンテンツキャッシュについてお読みください。これは、mod_deflateを有効にした後の次の論理的な手順です。