<?xml version='1.0' encoding='iso-2022-jp' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?>
<manualpage metafile="upgrading.xml.meta">
<!-- English revision: 1.6.2.5 -->

<title>1.3 から 2.0 へのアップグレード</title>

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

  <section id="compile-time">
    <title>コンパイル時の設定の変更</title>

    <ul>
      <li>Apache は <a href="install.html">ビルド処理の設定</a>
      に <code>autoconf</code> と <code>libtool</code> を使うようになりました。
      このシステムは Apache 1.3 の APACI システムと似ていますが、
      まったく同じというわけではありません。</li>

      <li>通常のコンパイルするかどうかを選択できるモジュール群に加えて、
      Apache 2.0 は
      リクエスト処理の主な部分を <a href="mpm.html">マルチプロセッシング
      モジュール</a> (MPM) に移動しました。</li>
    </ul>
  </section>

  <section id="run-time">
    <title>実行時の設定の変更</title>

    <ul>
      <li>Apache 1.3 の時にコアサーバにあった多くのディレクティブは
      MPM に移動しました。サーバに Apache 1.3 とできるだけ同じ振る舞いを
      させたい場合は、<module>prefork</module> MPM を
      選んでください。他の MPM はプロセスの作成やリクエストの処理の
      制御に異なったディレクティブを使います。</li>

      <li><a href="mod/mod_proxy.html">Proxy モジュール</a> は
      HTTP/1.1 に対応するために再構成されました。重要な変更点としては、
      プロキシのアクセス制御が <code>&lt;Directory proxy:&gt;</code> ブロックの
      代わりに <directive module="mod_proxy" type="section">Proxy</directive>
      ブロックに置かれるようになった、というものがあります。</li>

      <li>モジュールの中には、<code>PATH_INFO</code> (本当のファイル名の後に続く
      パス情報) の扱いが変わったものがあります。以前はハンドラとして
      実装されていたものがフィルタとして実装されるようになったものは
      <code>PATH_INFO</code> のあるリクエストを受け付けません。<a
      href="mod/mod_include.html">INCLUDES</a> や
      <a href="http://www.php.net/">PHP</a> などのフィルタは
      コアハンドラの上に実装されていますので、<code>PATH_INFO</code>
      付きのリクエストを拒否します。
      <directive module="core">AcceptPathInfo</directive>
      ディレクティブを使ってコアハンドラが <code>PATH_INFO</code>
      付きのリクエストを受け付けるようにでき、それによって SSI 等で
      <code>PATH_INFO</code> を使う機能を復活させることができます。</li>

      <li><directive module="mod_negotiation">CacheNegotiatedDocs</directive>
      ディレクティブは <code>on</code> もしくは <code>off</code> という引数を
      取るようになりました。既に存在している
      <directive>CacheNegotiatedDocs</directive> は
      <code>CacheNegotiatedDocs on</code>
      に置き換えてください。</li>

      <li>
        <directive module="core">ErrorDocument</directive>
	ディレクティブはテキストメッセージを
        示すために引数の最初に使われていた引用符を使わないようになりました。
        代わりに、メッセージを二重引用符で囲むようになっています。
        例えば、既存の

        <example>
          ErrorDocument 403 "Some Message
        </example>
        は

        <example>
          ErrorDocument 403 "Some Message"
        </example>

        に置き換える必要があります。
        二番目の引数は、有効な URL やパス名でない限り
        テキストメッセージとして扱われます。
      </li>

      <li><code>AccessConfig</code> ディレクティブと
      <code>ResourceConfig</code> ディレクティブは削除されました。
      これらのディレクティブは同等の機能を持つ
      <directive module="core">Include</directive> で
      置き換えることができます。設定ファイルに取り込む代わりに、
      上のディレクティブのデフォルト値を使っていた場合は、
      <code>httpd.conf</code> に <code>Include conf/access.conf</code> と
      <code>Include conf/srm.conf</code> を追加する必要があるでしょう。
      以前のディレクティブによる順番のように Apache が設定ファイルを
      読み込むようにするためには、<code>httpd.conf</code> の最後に
      <code>srm.conf</code>、<code>access.conf</code> の順にそれぞれ
      <directive module="core">Include</directive>
      ディレクティブを書いてください。</li>

      <li><code>BindAddress</code> ディレクティブと <code>Port</code>
      ディレクティブは削除されました。同等の機能はより柔軟な
      <directive module="mpm_common">Listen</directive>
      ディレクティブにより提供されています。</li>

      <li><code>Port</code> ディレクティブは Apache-1.3 には自己参照 URL で
      使われるポート番号を設定する、という使用法もありました。
      これは Apache-2.0 では新しい
      <directive module="core">ServerName</directive>
      構文によって行ないます。一つのディレクティブでホスト名<em>と</em>
      自己参照 URL の両方を設定できるように構文が変更されました。</li>

      <li><code>ServerName</code> ディレクティブは削除されました。
      リクエストを扱う方法は MPM の選択により決定されるようになりました。
      現時点では inetd から起動されるように設計された MPM はありません。</li>

      <li><code>AgentLog</code> ディレクティブ、
      <code>RefererLog</code> ディレクティブ、
      <code>RefererIgnore</code> ディレクティブを提供していた
      <code>mod_log_agent</code> と <code>mod_log_referer</code>
      モジュールは削除されました。
      Agent ログと refere ログは <directive>mod_log_config</directive> の
      <directive module="mod_log_config">CustomLog</directive>
      ディレクティブにより実現可能です。</li>

      <li><code>AddModule</code> ディレクティブと <code>ClearModuleList</code>
      ディレクティブは削除されました。これらのディレクティブは、
      モジュールが正しい順番で呼ばれるようにするために使われていました。
      Apache 2.0 の新 API はモジュールが明示的に順番を指定できるように
      なっており、これらのディレクティブは必要なくなりました。</li>

      <li><code>FancyIndexing</code> ディレクティブは削除されました。
      同じ機能は <directive module="mod_autoindex">IndexOptions</directive>
      ディレクティブの <code>FancyIndexing</code> オプションで
      実現できます。</li>

      <li><module>mod_negotiation</module> による MultiViews 
      コンテントネゴシエーション技術は、
      デフォルトのファイルマッチングがより厳密なものに変更されました。
      <em>ネゴシエート可能な</em>ファイルの場合にのみ選択されます。
      以前の挙動は、<directive module="mod_mime">MultiviewsMatch</directive>
      ディレクティブを使用することで復活できます。</li>

    </ul>
  </section>

  <section id="misc">
    <title>その他の変更</title>

    <ul>
      <li>Apache 1.3 で実験的なモジュールだった
      <directive>mod_auth_digest</directive> は
      標準モジュールになりました。</li>

      <li>Apache 1.3 で実験的なモジュールだった <code>mod_mmap_static</code> は
      <module>mod_file_cache</module> で置き換えられました。</li>

      <li>Apache の配布は独立した <code>src</code> ディレクトリが
      なくなるように、完全に再構成されました。その代わりに、
      ソースは主ディレクトリに論理的に配置されるようになり、
      コンパイルされたサーバのインストールは別ディレクトリへ
      行なうようになりました。</li>
    </ul>
  </section>

  <section id="third-party">
    <title>サードパーティモジュール</title>

    <p>Apache 2.0 のサーバ API には多くの変更が加えられました。
    Apache 1.3 用の既存のモジュールは Apache 2.0 では修正なしでは
    動き<strong>ません</strong>。詳細は <a
    href="developer/">開発者向け文書</a> にあります。</p>
  </section>

</manualpage>
