]> granicus.if.org Git - apache/blob - docs/manual/upgrading.xml
Mention that authnprovideralias isn't in mod_authn_alias any more.
[apache] / docs / manual / upgrading.xml
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$ -->
5
6 <!--
7  Licensed to the Apache Software Foundation (ASF) under one or more
8  contributor license agreements.  See the NOTICE file distributed with
9  this work for additional information regarding copyright ownership.
10  The ASF licenses this file to You under the Apache License, Version 2.0
11  (the "License"); you may not use this file except in compliance with
12  the License.  You may obtain a copy of the License at
13
14      http://www.apache.org/licenses/LICENSE-2.0
15
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.
21 -->
22
23 <manualpage metafile="upgrading.xml.meta">
24
25 <title>Upgrading to 2.4 from 2.2</title>
26
27 <summary>
28   <p>In order to assist folks upgrading, we maintain a document
29   describing information critical to existing Apache HTTP Server 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_4.html">New Features</a> document, or in
33   the <code>src/CHANGES</code> file.  Application and module developers
34   can find a summary of API changes in the <a href="developer/new_api_2_4.html"
35   >API updates</a> overview.</p>
36
37   <p>This document describes changes in server behavior that might
38   require you to change your configuration or how you use the server
39   in order to continue using 2.4 as you are currently using 2.2.
40   To take advantage of new features in 2.4, see the New Features
41   document.</p>
42
43   <p>This document describes only the changes from 2.2 to 2.4.  If you
44   are upgrading from version 2.0, you should also consult the <a
45   href="http://httpd.apache.org/docs/2.2/upgrading.html">2.0 to 2.2
46   upgrading document.</a></p>
47
48 </summary>
49 <seealso><a href="new_features_2_4.html">Overview of new features in
50   Apache HTTP Server 2.4</a></seealso>
51
52   <section id="compile-time">
53     <title>Compile-Time Configuration Changes</title>
54
55     <p>The compilation process is very similar to the one used in
56     version 2.2.  Your old <code>configure</code> command line (as
57     found in <code>build/config.nice</code> in the installed server
58     directory) can be used in most cases.  There are some changes in
59     the default settings.  Some details of changes:</p>
60
61     <ul>
62       <li>These modules have been removed: mod_authn_default,
63       mod_authz_default, mod_mem_cache.  If you were using
64       mod_mem_cache in 2.2, look at <module>mod_cache_disk</module> in
65       2.4.</li>
66
67       <li>All load balancing implementations have been moved to
68       individual, self-contained mod_proxy submodules, e.g.
69       <module>mod_lbmethod_bybusyness</module>.  You might need
70       to build and load any of these that your configuration
71       uses.</li>
72
73       <li>Platform support has been removed for BeOS, TPF, and
74       even older platforms such as A/UX, Next, and Tandem.  These were
75       believed to be broken anyway.</li>
76
77       <li>configure: dynamic modules (DSO) are built by default</li>
78
79       <li>configure: By default, only a basic set of modules is loaded. The
80       other <directive>LoadModule</directive> directives are commented
81       out.</li>
82
83       <li>configure: the "most" module set gets built by default</li>
84
85       <li>configure: the "reallyall" module set adds developer modules
86       to the "all" set</li>
87     </ul>
88
89   </section>
90
91   <section id="run-time">
92     <title>Run-Time Configuration Changes</title>
93     <p>There have been significant changes in authorization configuration,
94     and other minor configuration changes, that could require changes to your 2.2
95     configuration files before using them for 2.4.</p>
96
97     <section id="authz">
98       <title>Authorization</title>
99
100       <p>Any configuration file that uses authorization will likely
101       need changes.</p>
102
103     <p>You should review the <a href="howto/auth.html">Authentication,
104     Authorization and Access Control Howto</a>, especially the section
105     <a href="howto/auth.html#beyond">Beyond just authorization</a>
106     which explains the new mechanisms for controlling the order in
107     which the authorization directives are applied.</p>
108
109     <section id="access">
110       <title>Access control</title>
111
112       <p>In 2.2, access control based on client hostname, IP address,
113       and other characteristics of client requests was done using the
114       directives <directive
115       module="mod_access_compat">Order</directive>, <directive
116       module="mod_access_compat">Allow</directive>, <directive
117       module="mod_access_compat">Deny</directive>, and <directive
118       module="mod_access_compat">Satisfy</directive>.</p>
119
120       <p>In 2.4, such access control is done in the same way as other
121       authorization checks, using the new module
122       <module>mod_authz_host</module>.  The old access control idioms
123       should be replaced by the new authentication mechanisms,
124       although for compatibility with old configurations, the new
125       module <module>mod_access_compat</module> is provided.</p>
126
127       <p>Here are some examples of old and new ways to do the same
128       access control.</p>
129
130       <p>In this example, all requests are denied.</p>
131       <example>
132         <title>2.2 configuration:</title>
133         <highlight language="config">
134 Order deny,allow
135 Deny from all
136         </highlight>
137       </example>
138       <example>
139         <title>2.4 configuration:</title>
140         <highlight language="config">
141         Require all denied
142         </highlight>
143       </example>
144
145       <p>In this example, all requests are allowed.</p>
146       <example>
147         <title>2.2 configuration:</title>
148         <highlight language="config">
149 Order allow,deny
150 Allow from all
151         </highlight>
152       </example>
153       <example>
154         <title>2.4 configuration:</title>
155         <highlight language="config">
156         Require all granted
157         </highlight>
158       </example>
159
160       <p>In the following example, all hosts in the example.org domain
161       are allowed access; all other hosts are denied access.</p>
162
163       <example>
164         <title>2.2 configuration:</title>
165         <highlight language="config">
166 Order Deny,Allow
167 Deny from all
168 Allow from example.org
169         </highlight>
170       </example>
171       <example>
172         <title>2.4 configuration:</title>
173         <highlight language="config">
174         Require host example.org
175         </highlight>
176       </example>
177     </section>
178
179     </section>
180
181     <section id="config">
182       <title>Other configuration changes</title>
183
184       <p>Some other small adjustments may be necessary for particular
185       configurations as discussed below.</p>
186
187       <ul>
188         <li><directive>MaxRequestsPerChild</directive> has been renamed to
189         <directive module="mpm_common">MaxConnectionsPerChild</directive>,
190         describes more accurately what it does. The old name is still
191         supported.</li>
192
193         <li><directive>MaxClients</directive> has been renamed to
194         <directive module="mpm_common">MaxRequestWorkers</directive>,
195         which describes more accurately what it does. For async MPMs, like
196         <module>event</module>, the maximum number of clients is not
197         equivalent than the number of worker threads. The old name is still
198         supported.</li>
199
200         <li>The <directive module="core">DefaultType</directive>
201         directive no longer has any effect, other than to emit a
202         warning if it's used with any value other than
203         <code>none</code>.  You need to use other configuration
204         settings to replace it in 2.4.
205         </li>
206
207         <li><directive module="core">EnableSendfile</directive> now
208         defaults to Off.</li>
209
210         <li><directive module="core">FileETag</directive> now
211         defaults to "MTime Size" (without INode).</li>
212
213         <li><module>mod_log_config</module>: <a
214         href="modules/mod_log_config.html#formats">${cookie}C</a>
215         matches whole cookie names.  Previously any substring would
216         match.</li>
217
218         <li><module>mod_dav_fs</module>: The format of the <directive
219         module="mod_dav_fs">DavLockDB</directive> file has changed for
220         systems with inodes.  The old <directive
221         module="mod_dav_fs">DavLockDB</directive> file must be deleted on
222         upgrade.
223         </li>
224
225         <li><directive module="core">KeepAlive</directive> only
226         accepts values of <code>On</code> or <code>Off</code>.
227         Previously, any value other than "Off" or "0" was treated as
228         "On".</li>
229
230         <li>Directives AcceptMutex, LockFile, RewriteLock, SSLMutex,
231         SSLStaplingMutex, and WatchdogMutexPath have been replaced
232         with a single <directive module="core">Mutex</directive>
233         directive.  You will need to evaluate any use of these removed
234         directives in your 2.2 configuration to determine if they can
235         just be deleted or will need to be replaced using <directive
236         module="core">Mutex</directive>.</li>
237
238         <li><module>mod_cache</module>: <directive
239         module="mod_cache">CacheIgnoreURLSessionIdentifiers</directive>
240         now does an exact match against the query string instead of a
241         partial match.  If your configuration was using partial
242         strings, e.g. using <code>sessionid</code> to match
243         <code>/someapplication/image.gif;jsessionid=123456789</code>,
244         then you will need to change to the full string
245         <code>jsessionid</code>.
246         </li>
247
248         <li><module>mod_ldap</module>: <directive
249         module="mod_ldap">LDAPTrustedClientCert</directive> is now
250         consistently a per-directory setting only.  If you use this
251         directive, review your configuration to make sure it is
252         present in all the necessary directory contexts.</li>
253
254         <li><module>mod_filter</module>: <directive
255         module="mod_filter">FilterProvider</directive> syntax has changed and
256         now uses a boolean expression to determine if a filter is applied.
257         </li>
258
259         <li><module>mod_include</module>:
260             <ul>
261             <li>The <code>#if expr</code> element now uses the new <a
262             href="expr.html">expression parser</a>. The old syntax can be
263             restored with the new directive <directive module="mod_include"
264             >SSILegacyExprParser</directive>.
265             </li>
266             <li>An SSI* config directive in directory scope no longer causes
267             all other per-directory SSI* directives to be reset to their
268             default values.</li>
269             </ul>
270         </li>
271
272         <li><module>mod_charset_lite</module>: The <code>DebugLevel</code>
273         option has been removed in favour of per-module <directive
274         module="core">LogLevel</directive> configuration.
275         </li>
276
277         <li><module>mod_ext-filter</module>: The <code>DebugLevel</code>
278         option has been removed in favour of per-module <directive
279         module="core">LogLevel</directive> configuration.
280         </li>
281
282         <li><module>mod_ssl</module>: CRL based revocation checking
283         now needs to be explicitly configured through <directive
284         module="mod_ssl">SSLCARevocationCheck</directive>.
285         </li>
286
287         <li><module>mod_substitute</module>: The maximum line length is now
288         limited to 1MB.
289         </li>
290
291         <li><module>mod_reqtimeout</module>: If the module is loaded, it
292         will now set some default timeouts.</li>
293
294       </ul>
295     </section>
296   </section>
297
298   <section id="misc">
299     <title>Misc Changes</title>
300
301     <ul>
302       <li><module>mod_autoindex</module>: will now extract titles and
303       display descriptions for .xhtml files, which were previously
304       ignored.</li>
305
306       <li><module>mod_ssl</module>: The default format of the <code>*_DN</code>
307       variables has changed. The old format can still be used with the new
308       <code>LegacyDNStringFormat</code> argument to <directive
309       module="mod_ssl">SSLOptions</directive>. The SSLv2 protocol is
310       no longer supported. <directive module="mod_ssl">SSLProxyCheckPeerCN
311           </directive> and <directive module="mod_ssl">SSLProxyCheckPeerExpire
312           </directive> now default to On, causing proxy requests to HTTPS hosts
313           with bad or outdated certificates to fail with a 502 status code (Bad 
314           gateway)</li>
315
316       <li><program>htpasswd</program> now uses MD5 hash by default on
317       all platforms.</li>
318
319       <li>The <directive module="core">NameVirtualHost</directive>
320       directive no longer has any effect, other than to emit a
321       warning.  Any address/port combination appearing in multiple
322       virtual hosts is implicitly treated as a name-based virtual host.
323       </li>
324
325       <li><module>mod_deflate</module> will now skip compression if it knows
326       that the size overhead added by the compression is larger than the data
327       to be compressed.
328       </li>
329
330       <li>Multi-language error documents from 2.2.x may not work unless
331       they are adjusted to the new syntax of <module>mod_include</module>'s
332       <code>#if expr=</code> element or the directive
333       <directive module="mod_include">SSILegacyExprParser</directive> is
334       enabled for the directory containing the error documents.
335       </li>
336
337       <li>The functionality provided by <code>mod_authn_alias</code>
338       in previous versions (i.e., the <directive 
339       module="mod_authn_core">AuthnProviderAlias</directive> directive)
340       has been moved into <module>mod_authn_core</module>.  
341       </li>
342
343     </ul>
344
345   </section>
346
347   <section id="third-party">
348     <title>Third Party Modules</title>
349     <p>All modules must be recompiled for 2.4 before being loaded.</p>
350
351     <p>Many third-party modules designed for version 2.2 will
352     otherwise work unchanged with the Apache HTTP Server version 2.4.
353     Some will require changes; see the <a href="developer/new_api_2_4.html">API
354     update</a> overview.</p>
355   </section>
356
357   <section id="commonproblems">
358     <title>Common problems when upgrading</title>
359     <ul><li>Startup errors:
360     <ul>
361       <li><code>Invalid command 'User', perhaps misspelled or defined by a module not included in the server configuration</code> - load module <module>mod_unixd</module></li>
362       <li><code>Invalid command 'Require', perhaps misspelled or defined by a module not included in the server configuration</code>, or
363 <code>Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration</code>
364  - load module <module>mod_access_compat</module>, or update configuration to 2.4 authorization directives.</li>
365       <li><code>Ignoring deprecated use of DefaultType in line NN of /path/to/httpd.conf</code> - remove <directive module="core">DefaultType</directive>
366       and replace with other configuration settings.</li>
367     </ul></li>
368     <li>Errors serving requests:
369     <ul>
370       <li><code>configuration error:  couldn't check user: /path</code> -
371       load module <module>mod_authn_core</module>.</li>
372     </ul>
373     </li>
374 </ul>
375   </section>
376 </manualpage>