1.3 から 2.0 へのアップグレード - Apache HTTP サーバ

Apache HTTP サーバ バージョン 2.2

Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.2

# 1.3 から 2.0 へのアップグレード

Available Languages: de | en | fr | ja | ko | pt-br | ru

This translation may be out of date. Check the English version for recent changes.

アップグレードを簡単にするために、既存の Apache ユーザに 非常に重要な情報をこの文書にまとめています。これは短い 注意書きとして書かれています。より詳しい情報は 新機能の文書や `src/CHANGES` ファイルで見つけられると思います。

### 参照

- Apache 2.0 新機能の概要

## コンパイル時の設定の変更

- 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`

  は

  `ErrorDocument 403 "Some Message"`

  に置き換える必要があります。 二番目の引数は、有効な URL やパス名でない限り テキストメッセージとして扱われます。
- `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 では修正なしでは 動きません。詳細は 開発者向け文書 にあります。

Available Languages: de | en | fr | ja | ko | pt-br | ru