Apache 2.2でWebサイトをパフォーマンスアップ!
 − 最新Apacheの機能と設定方法教えます −

最新安定版Apache 2.2は、何が変わったのか? 2.0からバージョンアップするメリットとは? 最新のApacheを新機能の使い方とともに解説する。(編集部)

鶴長 鎮一(book@tsurunaga.jp)
2006/3/14

 開発バージョンであったApache 2.1が、2005年12月にApache 2.2としてリリースされました。パフォーマンス向上や機能拡張/改善が施されており、The Apache HTTP Server Projectは2.0から2.2へのバージョンアップを勧めています。ただし、2.0で使用していたモジュールや設定の中にはそのまま2.2で使用できないものもあり、2.2への移行に際して作業が必要になる場合もあることに注意しましょう。

Apache 2.2の主な変更点

 Apache 2.2は2.0に対して何が変わっているのか。まずは全体像を概観してみましょう。The Apache HTTP Server Projectの「Overview of new features in Apache 2.2」(http://httpd.apache.org/docs/2.2/new_features_2_2.html)で紹介されているApache 2.2の主な変更点は、以下のとおりです。

認証モジュールの見直し

 認証や承認のためのモジュールが見直され、機能ごとにモジュールを分割するなどの修正が行われました。例えばBASIC認証を提供するmod_auth_basicモジュールは単に認証や承認の手段のみを提供し、そのバックエンドとして「.htpasswd」ファイルを用いる場合は別途mod_authn_fileモジュールを利用することになりました。下位互換性が損なわれているため、mod_auth_pgsqlやmod_auth_mysqlなど、Apache 2.0で使用していた認証・承認モジュールが動作しない場合があります。

 モジュール名は、次のような命名規則が用いられています。

  mod_auth_XX 認証の方法を提供するモジュール
  mod_authn_XX 認証バックエンドをサポートするモジュール
  mod_authz_XX 承認(アクセス制御)を提供するモジュール
  mod_authnz_XX 認証と承認(アクセス制御)の両方をサポートするモジュール

ドキュメントキャッシュ機能の見直し

 メモリキャッシュやディスクキャッシュなど、HTTPコンテンツの動的キャッシュ機能が強化されました。開発バージョン時よりも安定性が向上し、Apache 2.2では実用的なレベルになっています。キャッシュ機能を用いることで、一般的にHTTPサービスの応答性を向上させることができます。

 また、Apacheをリバースプロキシサーバとして利用する場合もキャッシュ機能を利用可能です。

プロキシ機能によるロードバランシングの実現

 プロキシでロードバランス機能を実現するmod_proxy_balancerモジュールが追加されました。HTTPやFTPサービスはもちろん、Apache Tomcatなどのサーブレットコンテナとの通信で使われるAJP13プロトコルのロードバランス機能も提供します。

 バランシングの制御は、「リクエスト回数」と「トラフィック量」の2つのアルゴリズムが用意されています。また、Webベースのロードバランスマネージャが提供されており、Webブラウザで管理できます。バックエンドサーバが複数ある環境でも、JavaアプリケーションやPHPのセッション変数を永続的に利用できます。セッション変数を利用している場合、2回目以降のリクエストも最初に接続したバックエンドを使うスティッキーセッション方式が採用されているため、整合性を損なうことなくアプリケーションサーバの処理が行われます。

AJP1.3をサポートするモジュールの追加

 Apache Tomcatのサーブレットコンテナとの通信で使われるAJP1.3プロトコル(Apache JServ Protocol version 1.3)を直接扱えるmod_proxy_ajpモジュールが追加されました。従来のmod_jkは設定ファイルを別途用意する必要がありましたが、mod_proxy_ajpではhttpd.conf中で設定を行うことができます。

32bitシステムで2Gbytes超のファイルを実現

 カーネル2.4以降は、32bitプラットフォーム上でも2Gbytesを超すファイルの取り扱いが可能になっていますが、Apacheが扱えるメッセージボディの最大値には、依然として2Gbytesの制約がありました。

 Apache 2.2ではその制約がなくなりました。ただし、クライアント側でも同様の対応が必要になります。

 なお、Apache 2.0でも、2.0.53から2Gbytes超のファイルの取り扱いが可能になっています。

mod_filterを使ったフィルタ機能の強化

 Apache 2.0でもリクエストやレスポンスヘッダ、環境変数などの情報を基に動的に出力フィルタを適用できましたが、Apache 2.2では複数のフィルタを柔軟に組み合わせることができるmod_filterモジュールが追加されました。複雑な機能を実装したフィルタを1つ用意する代わりに、単機能のフィルタを複数組み合わせるといった運用が可能になっています。

RDBMSとの連携を可能にするmod_dbdモジュールの追加

 PostgreSQLなどのデータベースをサポートするmod_dbdモジュールやapr_dbdフレームワークが用意されました。データベースとの効率的な接続を可能にするコネクションプーリングをmod_dbdモジュールで管理可能になります。

 なお、Apache 2.2ではRDBMSを認証・承認のバックエンドに指定できるmod_authn_dbdモジュールが提供されていますが、対応するRDBMSが限られているため注意が必要です。

終了処理「graceful stop」の採用

 処理中のリクエストの完結を待って再起動する「graceful restart」はApache 2.0でも利用可能でしたが、2.2では「graceful stop」が新たに利用可能になりました。サービスを停止する際に、リクエスト処理中のクライアントの終了を待つため、ダウンロード途中で接続が解除されるような事態を防ぐことができます。

# /usr/local/apache2/bin/apachectl -k graceful
再起動

# /usr/local/apache2/bin/apachectl -k graceful-stop
終了

Perl互換正規表現ライブラリ5.0の同梱

 PCRE(Perl Compatible Regular Expression Library) version 5.0が採用されたことで、「.htaccess」や「httpd.conf」のようなコンフィグレーションファイルで、より複雑な文字列パターンを、Perl 5.0互換の正規表現を用いて記述可能になりました。

event MPMの追加

 ApacheのコアであるMPM(Multi Processing Module)に、新たにevent MPMが追加されました。worker MPMのようなマルチスレッド処理に加え、event MPMではKeep Aliveリクエストの処理に、コネクションを処理するスレッドとは別のスレッドを使用します。よりスケーラビリティに優れた運用が可能になります。

ThreadStackSizeディレクティブの追加

 MPMにおいて、コネクション処理を受け持つスレッドのスタックサイズをThreadStackSizeディレクティブを用いて調整可能になりました。大抵の場合、OSが指定しているスタックサイズのデフォルト値で問題ありませんが、意図的に小さなサイズを設定し、スレッドをより多く立ち上げるような使い方をします。

ロード済みモジュール一覧表示がDSOモジュールに対応

 これまで「httpd -l」で表示されるインストール済みモジュールの一覧は静的に組み込まれたもののみでしたが、新たに採用された「-M」オプションを使用することで、DSOを使って動的に組み込んだモジュールも表示できます。

# httpd -M
Loaded Modules:
 core_module (static) ←静的に組み込まれている場合はstaticと表示
 authn_file_module (static)
 authn_default_module (static)
(省略)
 deflate_module (shared) ←DSOで組み込まれている場合はsharedと表示
Syntax OK

httxt2dbmコマンド

 httxt2dbmコマンドで、テキストファイルからDBMファイルを生成します。DBMは古くからUNIXに実装されている簡単で高速なデータベースです。小規模なデータベースとして広く利用されており、ApacheではURLを書き換えるmod_rewriteモジュールのDBM RewriteMapにも利用されています。

mod_imagemapへの名称変更

 イメージマップをサポートするmod_imapモジュールは混乱を回避するため、mod_imagemapへ名称変更しました。

mod_sslモジュールのRFC 2817対応

 サービスポート80番に平文で接続してからTLS暗号化通信に移行するRFC 2817スタイルをサポートしています。ただし、これに対応したWebブラウザが皆無であるため、実際に使われるようになるのはまだ先の見通しです。

 RFC 2817スタイルが広く使われるようになると、HTTPはサービスポート80番、HTTPSはサービスポート443番という区別が不要になり、名前ベースで設定されたバーチャルホストのHTTPSも可能になります。

1/3

Index
Apache 2.2でWebサイトをパフォーマンスアップ!
 最新Apacheの機能と設定方法教えます
Page 1
Apache 2.2の主な変更点
  Page 2
強化されたドキュメントキャッシュ機能を使う
 ドキュメントキャッシュ機能の導入
 ドキュメントキャッシュ機能の設定
  Page 3
ロードバランスクラスタを使う
 ロードバランス機能の導入
 ロードバランス機能の設定

Linux Square全記事インデックス


 Linux Squareフォーラム サーバ構築・運用関連記事
連載:Heartbeatでかんたんクラスタリング(連載中)
オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します
特集:Apache 2.2でWebサイトをパフォーマンスアップ!
最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する
連載:実用 Apache 2.0運用・管理術(全8回)
本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える
連載:実用 BIND 9で作るDNSサーバ(全15回)
本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく
連載:実用qmailサーバ運用・管理術(全14回)
本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで
特集:Samba 3.0の全貌 改訂版
Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間