| サーバー通信データ圧縮化(Apache + mod_gzip) |
mod_gzipとはApacheのモジュールの一つで、サーバーからサイト観覧ユーザーまで、コンテンツを圧縮して転送することによりネットワークの帯域を節約することが可能になります。
※ mod_gzip は Apache1系のモジュールです。Apache2系では、mod_deflateというモジュールを使用します。
# rpm -aq | grep mod_gzip ← mod_gzipがインストール済か調べる # apt-get install mod_gzip ← Yosiの場合インストールされていなかったのでインストール パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下の追加パッケージがインストールされます: apache-devel 以下のパッケージが新たにインストールされます: apache-devel mod_gzip アップグレード: 0 個, 新規インストール: 2 個, 削除: 0 個, 保留: 1 個 223kB のアーカイブを取得する必要があります。 展開後に 720kB のディスク容量が追加消費されます。 続行しますか? [Y/n]y ← yを指定して [Enter] 取得:1 http://updates.vinelinux.org 3.2/i386/devel apache-devel 1.3.33-0vl2 [117kB] 取得:2 http://updates.vinelinux.org 3.2/i386/plus mod_gzip 1.3.26.1a-0vl2 [107kB] 223kB を 0s 秒で取得しました (284kB/s) 変更を適用しています... 準備中... ########################################### [100%] 1:apache-devel ########################################### [ 50%] 2:mod_gzip ########################################### [100%] |
| Apacheの設定 |
# mkdir /etc/httpd/tmp ← 作業用ディレクトリ作成 # chown -R apache:apache /etc/httpd/tmp ← グループ、ユーザーをapacheに # vi /etc/httpd/conf/httpd.conf ← 編集 i キー(入力モード) 下記を追記します。 # mod_gzipの設定 LoadModule gzip_module modules/mod_gzip.so AddModule mod_gzip.c <IfModule mod_gzip.c> # gzipのログフォーマット指定 LogFormat "%h %l %u %t \"%r\" %>s %b mod_gzip:%{mod_gzip_result}n In:%{mod_gzip_input_size}n Out:%{mod_gzip_output_size}n: %{mod_gzip_compression_ratio}npct." gzip_info # gzipのログの場所(httpdのログと分ける) CustomLog /var/log/httpd/gzip_log gzip_info # gzipを有効に mod_gzip_on Yes mod_gzip_can_negotiate Yes mod_gzip_static_suffix .gz AddEncoding gzip .gz mod_gzip_update_static No mod_gzip_dechunk yes mod_gzip_keep_workfiles No # 圧縮するファイルの最小サイズ。この値より小さいファイルは圧縮しない mod_gzip_minimum_file_size 0 # 圧縮するファイルの最大サイズ。この値より大きいファイルは圧縮しない(0は無限) mod_gzip_maximum_file_size 0 # 圧縮に使用するメモリサイズの上限 mod_gzip_maximum_inmem_size 52000 # 作業用ディレクトリ mod_gzip_temp_dir /etc/httpd/tmp # GET と POST リクエストを圧縮対象にする mod_gzip_handle_methods GET POST # 圧縮するファイルの指定 mod_gzip_item_include mime ^application/x-httpd-cgi mod_gzip_item_include mime ^application/x-httpd-php mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^httpd/unix-directory$ mod_gzip_item_include handler ^perl-script$ mod_gzip_item_include handler ^server-status$ mod_gzip_item_include handler ^server-info$ mod_gzip_item_include file \.shtml$ mod_gzip_item_include file \.htm$ mod_gzip_item_include file \.html$ mod_gzip_item_include file \.txt$ mod_gzip_item_include file \.dat$ mod_gzip_item_include file \.php$ mod_gzip_item_include file \.pl$ mod_gzip_item_include file \.cgi$ # 圧縮しないファイルの指定 mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude file \.css$ mod_gzip_item_exclude file \.js$ # サポートするHTTPプロトコル。1000ならHTTP/1.0以降、1001ならHTTP/1.1以降 mod_gzip_min_http 1001 </IfModule> 追記したら Esc キー(コマンドモード):wqで保存 # /etc/init.d/httpd restart ← 再起動 httpdを停止中: [ OK ] httpdを起動中: [ OK ] |
| ログローテーションの設定 |
# vi /etc/logrotate.d/apache ← 編集 i キー(入力モード) 下記を追記します。 /var/log/httpd/gzip_log { missingok postrotate /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true endscript } 追記したら Esc キー(コマンドモード):wq で保存 |
| データ圧縮の確認 |
※ まず最初に自分のサイトにアクセスをします。
# tail /var/log/httpd/gzip_log ← ログの確認 11.222.333.444 - - [01/Dec/2005:15:57:23 +0900] "GET / HTTP/1.1" 304 - mod_gzip:SEND_AS_IS:NO_200 In:0 Out:0: 0pct. 111.222.333.444 - - [01/Dec/2005:15:57:23 +0900] "GET /image/object/opening.jpg HTTP/1.1" 304 - mod_gzip:DECLINED:EXCLUDED In:0 Out:0: 0pct. |
ログを確認したら今度はこちらのサイトで確認します。
「Enter URL」に、自分のホスト名(例:xxxxx.com)を入力、
次に「goボタン」を押したら、別ウィンドウのページが開きます。
Summary:の項目で
Compression status: Compressed (gzip)
と表示されていればきちんと圧縮できていると言う事です。
File Size Comparison (in bytes):
この項目では、圧縮前後でのファイルサイズや圧縮率を確認する事ができます。
Speed Comparison by Connection Type (in seconds):
この項目では、圧縮前後での通信速度を確認する事ができます。
これらの項目をチェックして、どれくらい圧縮による効果があるか確認します。
Copyright c Vine Linuxで自宅サーバー. 2004 All Rights Reserved.