Apache HTTP サーバ バージョン 2.0
1.3 から 2.0 へのアップグレード
アップグレードを簡単にするために、既存の Apache ユーザに
非常に重要な情報をこの文書にまとめています。これは短い
注意書きとして書かれています。より詳しい情報は
新機能の文書や
src/CHANGES
ファイルで見つけられると思います。
コンパイル時の設定の変更
- Apache は ビルド処理の設定
に
autoconf
とlibtool
を使うようになりました。 このシステムは Apache 1.3 の APACI システムと似ていますが、 まったく同じというわけではありません。 - 通常のコンパイルするかどうかを選択できるモジュール群に加えて、 Apache 2.0 は リクエスト処理の主な部分を マルチプロセッシング モジュール (MPM) に移動しました。
実行時の設定の変更
- Apache 1.3 の時にコアサーバにあった多くのディレクティブは
MPM に移動しました。サーバに Apache 1.3 とできるだけ同じ振る舞いを
させたい場合は、
prefork
MPM を 選んでください。他の MPM はプロセスの作成やリクエストの処理の 制御に異なったディレクティブを使います。 - Proxy モジュール は
HTTP/1.1 に対応するために再構成されました。重要な変更点としては、
プロキシのアクセス制御が
<Directory proxy:>
ブロックの 代わりに<Proxy>
ブロックに置かれるようになった、というものがあります。 - モジュールの中には、
PATH_INFO
(本当のファイル名の後に続く パス情報) の扱いが変わったものがあります。以前はハンドラとして 実装されていたものがフィルタとして実装されるようになったものはPATH_INFO
のあるリクエストを受け付けません。INCLUDES や PHP などのフィルタは コアハンドラの上に実装されていますので、PATH_INFO
付きのリクエストを拒否します。AcceptPathInfo
ディレクティブを使ってコアハンドラがPATH_INFO
付きのリクエストを受け付けるようにでき、それによって SSI 等でPATH_INFO
を使う機能を復活させることができます。 CacheNegotiatedDocs
ディレクティブはon
もしくはoff
という引数を 取るようになりました。既に存在しているCacheNegotiatedDocs
はCacheNegotiatedDocs on
に置き換えてください。-
ErrorDocument
ディレクティブはテキストメッセージを 示すために引数の最初に使われていた引用符を使わないようになりました。 代わりに、メッセージを二重引用符で囲むようになっています。 例えば、既存のはErrorDocument 403 "Some Message
に置き換える必要があります。 二番目の引数は、有効な URL やパス名でない限り テキストメッセージとして扱われます。ErrorDocument 403 "Some Message"
AccessConfig
ディレクティブとResourceConfig
ディレクティブは削除されました。 これらのディレクティブは同等の機能を持つInclude
で 置き換えることができます。設定ファイルに取り込む代わりに、 上のディレクティブのデフォルト値を使っていた場合は、httpd.conf
にInclude conf/access.conf
とInclude conf/srm.conf
を追加する必要があるでしょう。 以前のディレクティブによる順番のように Apache が設定ファイルを 読み込むようにするためには、httpd.conf
の最後にsrm.conf
、access.conf
の順にそれぞれInclude
ディレクティブを書いてください。BindAddress
ディレクティブとPort
ディレクティブは削除されました。同等の機能はより柔軟なListen
ディレクティブにより提供されています。Port
ディレクティブは Apache-1.3 には自己参照 URL で 使われるポート番号を設定する、という使用法もありました。 これは Apache-2.0 では新しいServerName
構文によって行ないます。一つのディレクティブでホスト名と 自己参照 URL の両方を設定できるように構文が変更されました。ServerName
ディレクティブは削除されました。 リクエストを扱う方法は MPM の選択により決定されるようになりました。 現時点では inetd から起動されるように設計された MPM はありません。AgentLog
ディレクティブ、RefererLog
ディレクティブ、RefererIgnore
ディレクティブを提供していたmod_log_agent
とmod_log_referer
モジュールは削除されました。 Agent ログと refere ログはmod_log_config
のCustomLog
ディレクティブにより実現可能です。AddModule
ディレクティブとClearModuleList
ディレクティブは削除されました。これらのディレクティブは、 モジュールが正しい順番で呼ばれるようにするために使われていました。 Apache 2.0 の新 API はモジュールが明示的に順番を指定できるように なっており、これらのディレクティブは必要なくなりました。FancyIndexing
ディレクティブは削除されました。 同じ機能はIndexOptions
ディレクティブのFancyIndexing
オプションで 実現できます。mod_negotiation
による MultiViews コンテントネゴシエーション技術は、 デフォルトのファイルマッチングがより厳密なものに変更されました。 ネゴシエート可能なファイルの場合にのみ選択されます。 以前の挙動は、MultiviewsMatch
ディレクティブを使用することで復活できます。- (バージョン 2.0.51 から)
ErrorHeader
ディレクティブは不適切な名前 だったために廃止され、その機能はHeader
ディレクティブに統合されました。 望みの動作を得るためには ErrorHeader の代わりにHeader always set foo bar
を使ってください。
その他の変更
- Apache 1.3 で実験的なモジュールだった
mod_auth_digest
は 標準モジュールになりました。 - Apache 1.3 で実験的なモジュールだった
mod_mmap_static
はmod_file_cache
で置き換えられました。 - Apache の配布は独立した
src
ディレクトリが なくなるように、完全に再構成されました。その代わりに、 ソースは主ディレクトリに論理的に配置されるようになり、 コンパイルされたサーバのインストールは別ディレクトリへ 行なうようになりました。
サードパーティモジュール
Apache 2.0 のサーバ API には多くの変更が加えられました。 Apache 1.3 用の既存のモジュールは Apache 2.0 では修正なしでは 動きません。詳細は 開発者向け文書 にあります。