前書き

Mod_deflateは、Webサーバーからの出力をクライアントに送信する前に圧縮できるようにするApacheモジュールです。 サイトコンテンツのサイズが圧縮されると、サイズが小さくなり、クライアントはより高速にダウンロードできます。 これは、帯域幅が狭いクライアントだけでなく、サイトのパフォーマンスとページランクを評価する際に検索エンジンによっても考慮されます。

コンテンツの圧縮に加えて、mod_deflateは圧縮解除の目的にも使用できます。 この手法は、Apacheをリバースプロキシとして使用し、プロキシを通過するコンテンツをさらに処理する場合に適用できます。 ただし、この手法の使用は非常に限られています。 圧縮にmod_deflateを使用することに関する記事の焦点を維持します。

前提条件

このガイドはUbuntu 14.04でテストされています。 CentOS 7の場合は、https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-mod_deflate-on-centos-7 [このガイド]を確認してください。 モジュールのインストールと構成はOSまたはOSバージョンに依存しませんが、構成ファイルの場所はOSとそのバージョンによって異なる場合があります。

また、Apache 2.4.0以降を実行していることを前提としています。 Apacheをインストールするには、https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-14-04のステップ#1に従ってください[ Ubuntu 14.04にLinux、Apache、MySQL、PHP(LAMP)スタックをインストールする方法]の記事。

このチュートリアルのすべてのコマンドは、非rootユーザーとして実行する必要があります。 コマンドにルートアクセスが必要な場合は、先頭に「+ sudo +」が付きます。 まだセットアップしていない場合は、このチュートリアルに従ってください:https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04[Ubuntu 14.04での初期サーバーセットアップ] 。

インストール

mod_deflateは、Ubuntu 14.04のデフォルトのApacheインストールに含まれており、有効になっています。 これを確認するには、Apache Server Control Interfaceの「+ apachectl 」を実行し、次のようにキーワード「 deflate 」の「 grep +」で出力をフィルタリングします。

apachectl -t -D DUMP_MODULES |grep deflate

mod_deflateがインストールされ有効になっている場合は、「+ deflate_module(shared)+」が表示されます。 これが表示されない場合は、次のトラブルシューティング手順を行ってください。

  1. モジュールファイルがインストールされていることを確認します。 このファイルは、コアの「+ apache2 」パッケージの一部であり、前述の前提条件に従って既にインストールされているはずです。 デフォルトでは、 ` / usr / lib / apache2 / modules / mod_deflate.so `にあります。 また、Webサーバーはこのファイルを開くことができるはずです。 この目的のために、 ` mod_deflate.so +`には644などの誰でも読み取り可能な権限が必要です。

  2. モジュールがロードされているかどうかを確認してください。 モジュール設定ファイル `+ / etc / apache2 / mods-enabled / deflate.load `を開きます。これは ` / etc / apache2 / mods-available / deflate.load +`へのシンボリックリンクであり、この行が存在することを確認してください。コメントアウト:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

設定

mod_deflateの使用を開始するには、圧縮するファイルタイプを指定する必要があります。 一方では、プレーンテキスト形式は圧縮によってサイズを大幅に縮小できるため、HTML、CSS、またはJavaScriptファイルに適用するのが理にかなっています。 一方、Flashや画像などの多くのマルチメディア形式にはすでに圧縮が含まれており、追加の圧縮は無駄になります。

最初に、ファイル `+ / etc / apache2 / mods-enabled / deflate.conf `のデフォルト設定、 ` / etc / apache2 / mods-available / deflate.conf +`へのシンボリックリンクを使用できます。

/etc/apache2/mods-enabled/deflate.conf

<IfModule mod_deflate.c>
       <IfModule mod_filter.c>
               # these are known to be safe with MSIE 6
               AddOutputFilterByType DEFLATE text/html text/plain text/xml

               # everything else may cause problems with MSIE 6
               AddOutputFilterByType DEFLATE text/css
               AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
               AddOutputFilterByType DEFLATE application/rss+xml
               AddOutputFilterByType DEFLATE application/xml
       </IfModule>
</IfModule>

上記のコードは、ファイルが拡張子に一致する場合、 + .html ++ .txt ++ .xml ++ .css +、 `+ .js `などの一般的なテキストファイル拡張子を一致させることを意味します。 mod_deflateのdeflateアクションによって圧縮されます。 mimeタイプによって拡張子がどのようにマッピングされるかわからない場合は、ファイル ` / etc / mime.types +`を確認してください。 サイト固有の拡張機能を追加することをお勧めします。

+
注意: Ubuntuでは、Apacheの構成は複数のファイルで直感的に整理されています。 また、構成ファイルは通常有効になっていません。 たとえば、モジュール設定ファイルはディレクトリ + / etc / apache2 / mods-available / +`にあります。 `+ / etc / apache2 / mods-available / deflate.conf +。 モジュール設定ファイルは、「+ / etc / apache2 / mods-enabled / deflate.conf 」などのディレクトリ「 / etc / apache2 / mods-enabled / +」にシンボリックリンクが作成された場合にのみ有効になります。

さらに、mod_deflateには重要な設定オプションがいくつかあります。

  • + DeflateCompressionLevel +-適用される圧縮レベル。 デフォルトでは、このレベルは圧縮の最高レベルである9です。 1は最小の圧縮レベルです。 圧縮率を高くすると、サーバーのCPU使用率が高くなりますが、出力は最小になります。

  • + DeflateMemLevel +-圧縮ライブラリが使用できるメモリzlibの量。 デフォルト値は9で、これも最高値です。 許容メモリを正確に計算するには、 `+ DeflateMemLevel +`値に16Kを掛ける必要があります。

  • + DeflateWindowSize +-圧縮ウィンドウのサイズ。 デフォルトでは、可能な最大値の15です。 数値が大きいほど、圧縮レベルが高くなりますが、サーバーリソースが増えます。

ほとんどの場合、上記の値をデフォルトのままにしておくことができます。 ただし、mod_deflateの使用後にサーバーのパフォーマンスが大幅に低下したと思われる場合は、設定ファイル `+ / etc / apache2 / mods-enabled / deflate.conf +`で次のように低い値を設定できます。

DeflateCompressionLevel 1

上記により、圧縮レベルが低下し、ファイルが大きくなります。 ただし、mod_deflateはこの方法で使用するCPUが少なくなります。 このような変更を適用する場合は、Apacheを再起動してください。

テスト

mod_deflateをテストするにはさまざまな方法がありますが、最も簡単な方法は、非対話型ネットワークダウンローダーであるwgetを使用することです。 Ubuntu 14.04ドロップレットにまだインストールしていない場合は、コマンド `+ sudo apt-get install wget +`でインストールできます。

テストには、少なくとも数百KBのテキストファイルが必要です。このファイルは、圧縮すると小さくなります。 そのようなファイルが手元にない場合は、人気のあるJavaScriptライブラリであるhttp://code.jquery.com/jquery-1.11.3.js[JQuery]をダウンロードして、サイトにアップロードできます。 ファイルの配置場所がわからない場合は、Ubuntu 14.04の `+ / var / www / html / +`にあるApacheのデフォルトのドキュメントルートに単純にアップロードできます。 したがって、ファイルはデフォルトサイトのルートディレクトリで使用可能になります。

+
注意: mod_deflateが出力を圧縮するには、クライアント(通常はブラウザー)が圧縮をサポートする必要があります。 クライアントが圧縮をサポートしていない場合、ファイルはそのまま送信されます。

サンプルのテストファイルをサイトにアップロードしたら、 `+ wget +`でダウンロードします。 このテストは、ローカルマシンまたはドロップレットから実行できます。 このような:

wget --header="Accept-Encoding: gzip" http://<your_server_ip>/jquery-1.11.3.js

上記の例では、Apacheサーバーから `+ jquery-1.11.3.js`ファイルをダウンロードしています。 圧縮を利用するには、追加の `+ wget `ヘッダー引数 ` Accept-Encoding:gzip +`を渡します。

上記の方法でダウンロードした場合、ファイル「+ jquery-1.11.3.js +」は83KBになります。 実際のところ、これは元のJavaScriptファイルとまったく同じではなく、クライアントによって追加で抽出される必要があり、クライアント側にもオーバーヘッドが発生します。 ただし、ネットワーク経由で転送されるサイズはわずか83KBで、元のファイル(278K)よりも3倍以上小さくなります。

上記の計算を確認するには、ダウンロードしたファイルのサイズを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はサイトの帯域幅のニーズを大幅に削減するのに役立ちます。 サイトの最適化をさらに続行するには、https://www.digitalocean.com/community/tutorials/how-to-configure-apache-content-caching-on-ubuntu-14-04 [Apache content cache]についてお読みください。 mod_deflateを有効にした後の次の論理ステップです。