1 <?xml version='1.0' encoding='UTF-8' ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.en.xsl"?>
4 <!-- $LastChangedRevision$ -->
7 Copyright 2002-2005 The Apache Software Foundation or its licensors,
10 Licensed under the Apache License, Version 2.0 (the "License");
11 you may not use this file except in compliance with the License.
12 You may obtain a copy of the License at
14 http://www.apache.org/licenses/LICENSE-2.0
16 Unless required by applicable law or agreed to in writing, software
17 distributed under the License is distributed on an "AS IS" BASIS,
18 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 See the License for the specific language governing permissions and
20 limitations under the License.
23 <manualpage metafile="upgrading.xml.meta">
25 <title>Upgrading to 2.0 from 1.3</title>
28 <p>In order to assist folks upgrading, we maintain a document
29 describing information critical to existing Apache users. These
30 are intended to be brief notes, and you should be able to find
31 more information in either the <a
32 href="new_features_2_0.html">New Features</a> document, or in
33 the <code>src/CHANGES</code> file.</p>
35 <seealso><a href="new_features_2_0.html">Overview of new features in
36 Apache 2.0</a></seealso>
38 <section id="compile-time">
39 <title>Compile-Time Configuration Changes</title>
42 <li>Apache now uses an <code>autoconf</code> and
43 <code>libtool</code> system for <a
44 href="install.html">configuring the build processes</a>.
45 Using this system is similar to, but not the same as, using
46 the APACI system in Apache 1.3.</li>
48 <li>In addition to the usual selection of modules which you
49 can choose to compile, Apache 2.0 has moved the main part of
50 request processing into <a href="mpm.html">Multi-Processing
51 Modules</a> (MPMs).</li>
55 <section id="run-time">
56 <title>Run-Time Configuration Changes</title>
59 <li>Many directives that were in the core server in Apache
60 1.3 are now in the MPMs. If you wish the behavior of the
61 server to be as similar as possible to the behavior of Apache
62 1.3, you should select the <module>prefork</module> MPM. Other MPMs
63 will have different directives to control process creation and request
66 <li>The <a href="mod/mod_proxy.html">proxy module</a> has been
67 revamped to bring it up to HTTP/1.1. Among the important changes,
68 proxy access control is now placed inside a <directive type="section"
69 module="mod_proxy">Proxy</directive> block rather than a
70 <code><Directory proxy:></code> block.</li>
72 <li>The handling of <code>PATH_INFO</code> (trailing path information
73 after the true filename) has changed for some modules. Modules
74 that were previously implemented as a handler but are now
75 implemented as a filter may no longer accept requests with
76 <code>PATH_INFO</code>. Filters such as <a
77 href="mod/mod_include.html">INCLUDES</a> or <a
78 href="http://www.php.net/">PHP</a> are implemented on top
79 of the core handler, and therefore reject requests with
80 <code>PATH_INFO</code>. You can use the <directive
81 module="core">AcceptPathInfo</directive> directive to
82 force the core handler to accept requests with <code>PATH_INFO</code>
83 and thereby restore the ability to use <code>PATH_INFO</code> in
84 server-side includes.</li>
87 module="mod_negotiation">CacheNegotiatedDocs</directive>
88 directive now takes the argument <code>on</code> or
89 <code>off</code>. Existing instances of <directive
90 >CacheNegotiatedDocs</directive> should be
91 replaced with <code>CacheNegotiatedDocs on</code>.</li>
94 The <directive module="core">ErrorDocument</directive>
95 directive no longer uses a quote at the beginning of the
96 argument to indicate a text message. Instead, you should
97 enclose the message in double quotes. For example, existing
101 ErrorDocument 403 "Some Message
103 should be replaced with
106 ErrorDocument 403 "Some Message"
109 As long as the second argument is not a valid URL or
110 pathname, it will be treated as a text message.
113 <li>The <code>AccessConfig</code> and
114 <code>ResourceConfig</code> directives no longer exist.
115 Existing instances of these directives can be replaced with
116 the <directive module="core">Include</directive>
117 directive which has equivalent functionality. If you were
118 making use of the default values of these directives without
119 including them in the configuration files, you may need to
120 add <code>Include conf/access.conf</code> and <code>Include
121 conf/srm.conf</code> to your <code>httpd.conf</code>. In order to
122 assure that Apache reads the configuration files in the same order
123 as was implied by the older directives, the <directive
124 module="core">Include</directive> directives should be placed at the end
125 of <code>httpd.conf</code>, with the one for <code>srm.conf</code>
126 preceding the one for <code>access.conf</code>.</li>
128 <li>The <code>BindAddress</code> and <code>Port</code>
129 directives no longer exist. Equivalent functionality is
130 provided with the more flexible
131 <directive module="mpm_common">Listen</directive>
134 <li>Another use of the <code>Port</code>
135 directive in Apache-1.3 was setting the port number to be used
136 in self-referential URL's. The Apache-2.0 equivalent is
137 the new <directive module="core">ServerName</directive>
138 syntax: it has been changed to allow specifying both the
139 hostname <em>and</em> the port number for self-referential URL's
140 in one directive.</li>
142 <li>The <code>ServerType</code> directive no longer exists.
143 The method used to serve requests is now determined by the
144 selection of MPM. There is currently no MPM designed to be
145 launched by inetd.</li>
147 <li>The <code>mod_log_agent</code> and <code>mod_log_referer</code>
148 modules which provided the <code>AgentLog</code>,
149 <code>RefererLog</code> and <code>RefererIgnore</code> directives have
150 been removed. Agent and referer logs are still available using the
151 <directive module="mod_log_config">CustomLog</directive>
152 directive of <module>mod_log_config</module>.</li>
154 <li>The <code>AddModule</code> and
155 <code>ClearModuleList</code> directives no longer exist.
156 These directives were used to ensure that modules could be
157 enabled in the correct order. The new Apache 2.0 API allows
158 modules to explicitly specify their ordering, eliminating the
159 need for these directives.</li>
161 <li>The <code>FancyIndexing</code> directive has been removed.
162 The same functionality is available through the
163 <code>FancyIndexing</code> option to the <directive
164 module="mod_autoindex">IndexOptions</directive>
167 <li>The MultiViews content-negotiation technique provided by
168 <module>mod_negotiation</module> has become more strict in its
169 default file matching. It will select only from <em>negotiable</em>
170 files. The old behavior can be restored using the <directive
171 module="mod_mime">MultiviewsMatch</directive> directive.</li>
173 <li>(<em>since version 2.0.51</em>)
174 <p>The functionality of the <code>ErrorHeader</code> directive was
175 put together with the <directive module="mod_headers">Header</directive>
176 directive, since it was a misnomer. Use</p>
179 Header always set foo bar
182 <p>instead to get the desired behaviour.</p></li>
187 <title>Misc Changes</title>
190 <li>The module <module>mod_auth_digest</module>, which was
191 experimental in Apache 1.3, is now a standard module.</li>
193 <li>The <code>mod_mmap_static</code> module, which was experimental in
194 Apache 1.3, has been replaced with <module>mod_file_cache</module>.</li>
196 <li>The distribution has been completely reorganized so that
197 it no longer contains an independent <code>src</code>
198 directory. Instead, the sources are logically organized under
199 the main distribution directory, and installations of the
200 compiled server should be directed to a separate
205 <section id="third-party">
206 <title>Third Party Modules</title>
208 <p>Extensive changes were made to the server API in Apache 2.0.
209 Existing modules designed for the Apache 1.3 API will
210 <strong>not</strong> work in Apache 2.0 without modification.
211 Details are provided in the <a href="developer/">developer
212 documentation</a>.</p>