auto-import httpd-2.0.40-21 from httpd-2.0.40-21.src.rpm

This commit is contained in:
cvsdist 2004-09-09 06:12:16 +00:00
parent 4145af8330
commit f8e1fe349e
5 changed files with 1123 additions and 101 deletions

27
html.xsl Normal file
View File

@ -0,0 +1,27 @@
<?xml version='1.0'?>
<!-- This file wraps around the DocBook HTML XSL stylesheet to customise
- some parameters; add the CSS stylesheet, etc.
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version='1.0'
xmlns="http://www.w3.org/TR/xhtml1/transitional"
exclude-result-prefixes="#default">
<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/>
<xsl:variable name="html.stylesheet">migration.css</xsl:variable>
<!-- add class="programlisting" attribute on the <pre>s from
<programlisting>s so that the CSS can style them nicely. -->
<xsl:attribute-set name="shade.verbatim.style">
<xsl:attribute name="class">programlisting</xsl:attribute>
</xsl:attribute-set>
<!-- do generate variablelist's as tables -->
<xsl:variable name="variablelist.as.table" select="1"/>
<xsl:variable name="section.autolabel" select="1"/>
</xsl:stylesheet>

View File

@ -194,7 +194,6 @@ LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so LoadModule autoindex_module modules/mod_autoindex.so
LoadModule asis_module modules/mod_asis.so LoadModule asis_module modules/mod_asis.so
LoadModule info_module modules/mod_info.so LoadModule info_module modules/mod_info.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so LoadModule negotiation_module modules/mod_negotiation.so
@ -210,6 +209,14 @@ LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_connect_module modules/mod_proxy_connect.so
<IfModule prefork.c>
LoadModule cgi_module modules/mod_cgi.so
</IfModule>
<IfModule worker.c>
LoadModule cgid_module modules/mod_cgid.so
</IfModule>
# #
# ExtendedStatus controls whether Apache will generate "full" status # ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus # information (ExtendedStatus On) or just basic information (ExtendedStatus
@ -339,7 +346,7 @@ DocumentRoot "/var/www/html"
# Disable autoindex for the root directory, and present a # Disable autoindex for the root directory, and present a
# default Welcome page if no other index page is present. # default Welcome page if no other index page is present.
# #
<LocationMatch "^/+$"> <LocationMatch "^/$>
Options -Indexes Options -Indexes
ErrorDocument 403 /error/noindex.html ErrorDocument 403 /error/noindex.html
</LocationMatch> </LocationMatch>
@ -565,7 +572,7 @@ ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
# Additional to mod_cgid.c settings, mod_cgid has Scriptsock <path> # Additional to mod_cgid.c settings, mod_cgid has Scriptsock <path>
# for setting UNIX socket for communicating with cgid. # for setting UNIX socket for communicating with cgid.
# #
#Scriptsock logs/cgisock Scriptsock run/httpd.cgid
</IfModule> </IfModule>
# #

View File

@ -20,9 +20,13 @@ fi
# mod_ssl needs a pass-phrase from the user. # mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS="" INITLOG_ARGS=""
# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.
# Path to the apachectl script, server binary, and short-form for messages. # Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/sbin/apachectl apachectl=/usr/sbin/apachectl
httpd=/usr/sbin/httpd httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd prog=httpd
RETVAL=0 RETVAL=0

View File

@ -2,64 +2,53 @@
%define suexec_caller apache %define suexec_caller apache
%define mmn 20020628 %define mmn 20020628
%ifarch ia64
# disable debuginfo on IA64
%define debug_package %{nil}
%endif
Summary: Apache HTTP Server Summary: Apache HTTP Server
Name: httpd Name: httpd
Version: 2.0.40 Version: 2.0.40
Release: 11.9 Release: 21
URL: http://httpd.apache.org/ URL: http://httpd.apache.org/
Vendor: Red Hat, Inc.
Source0: http://www.apache.org/dist/httpd/httpd-%{version}.tar.gz Source0: http://www.apache.org/dist/httpd/httpd-%{version}.tar.gz
Source1: index.html Source1: index.html
Source3: httpd.logrotate Source3: httpd.logrotate
Source4: httpd.init Source4: httpd.init
Source5: README.confd
Source6: powered_by.gif Source6: powered_by.gif
Source10: httpd.conf Source10: httpd.conf
Source11: ssl.conf Source11: ssl.conf
Source12: migration.html
Source13: migration.css
Source14: mod_ssl-Makefile.crt Source14: mod_ssl-Makefile.crt
Source14: mod_ssl-Makefile.crl Source15: mod_ssl-Makefile.crl
# Documentation
Source30: migration.xml
Source31: migration.css
Source32: html.xsl
Source33: README.confd
# build/scripts patches # build/scripts patches
Patch1: httpd-2.0.40-apctl.patch Patch1: httpd-2.0.40-apctl.patch
Patch2: httpd-2.0.36-apxs.patch Patch2: httpd-2.0.36-apxs.patch
Patch3: httpd-2.0.36-sslink.patch Patch3: httpd-2.0.36-sslink.patch
# Bug fixes # Bug fixes
Patch20: httpd-2.0.40-davsegv.patch Patch20: httpd-2.0.40-davsegv.patch
Patch21: httpd-2.0.40-leaks.patch Patch21: httpd-2.0.40-glibc23.patch
Patch22: httpd-2.0.40-nphcgi.patch
Patch23: httpd-2.0.40-proxy.patch
Patch24: httpd-2.0.40-range.patch
Patch26: httpd-2.0.40-pipelog.patch
Patch27: httpd-2.0.40-rwmap.patch
Patch28: httpd-2.0.40-stream.patch
Patch29: httpd-2.0.40-subreq.patch
Patch30: httpd-2.0.40-sslexcl.patch
Patch31: httpd-2.0.40-include.patch
Patch32: httpd-2.0.46-graceful.patch
Patch33: httpd-2.0.40-rand.patch
# features/functional changes # features/functional changes
Patch40: httpd-2.0.36-cnfdir.patch Patch40: httpd-2.0.36-cnfdir.patch
Patch41: httpd-2.0.36-redhat.patch Patch41: httpd-2.0.36-redhat.patch
Patch42: httpd-2.0.40-xfsz.patch Patch42: httpd-2.0.40-xfsz.patch
Patch43: httpd-2.0.40-pod.patch Patch43: httpd-2.0.40-pod.patch
Patch44: httpd-2.0.40-prctl.patch Patch44: httpd-2.0.40-noshmht.patch
Patch45: httpd-2.0.40-leaks.patch
# Security fixes # Security fixes
Patch60: httpd-2.0.40-CAN-2002-0840.patch Patch60: httpd-2.0.40-CAN-2002-0840.patch
Patch61: httpd-2.0.40-CAN-2002-0843.patch Patch61: httpd-2.0.40-CAN-2002-0843.patch
Patch62: httpd-2.0.40-CAN-2003-0132.patch Patch62: httpd-2.0.40-CAN-2003-0020.patch
Patch63: httpd-2.0.40-CAN-2003-0020.patch
Patch64: httpd-2.0.40-fdleak.patch
Patch65: httpd-2.0.40-CAN-2003-0083.patch
Patch66: httpd-2.0.40-CAN-2003-0245.patch
Patch68: httpd-2.0.40-CAN-2003-0192.patch
Patch69: httpd-2.0.40-CAN-2003-0253.patch
Patch70: httpd-2.0.40-CAN-2003-0254.patch
Patch71: httpd-2.0.40-VU379828.patch
Patch72: httpd-2.0.40-CAN-2003-0542.patch
License: Apache Software License License: Apache Software License
Group: System Environment/Daemons Group: System Environment/Daemons
BuildRoot: %{_tmppath}/%{name}-root BuildRoot: %{_tmppath}/%{name}-root
BuildPrereq: db4-devel, expat-devel, findutils, perl BuildPrereq: db4-devel, expat-devel, findutils, perl, pkgconfig, xmlto >= 0.0.11
Requires: /etc/mime.types, gawk, /usr/share/magic.mime, /usr/bin/find Requires: /etc/mime.types, gawk, /usr/share/magic.mime, /usr/bin/find
Prereq: /sbin/chkconfig, /bin/mktemp, /bin/rm, /bin/mv Prereq: /sbin/chkconfig, /bin/mktemp, /bin/rm, /bin/mv
Prereq: sh-utils, textutils, /usr/sbin/useradd Prereq: sh-utils, textutils, /usr/sbin/useradd
@ -113,79 +102,109 @@ Security (TLS) protocols.
%prep %prep
%setup -q %setup -q
%patch1 -p0 -b .apctl %patch1 -p0 -b .apctl
%patch2 -p1 -b .apxs %patch2 -p0 -b .apxs
%patch3 -p0 -b .sslink %patch3 -p0 -b .sslink
%patch20 -p1 -b .davsegv %patch20 -p1 -b .davsegv
%patch21 -p0 -b .leaks %patch21 -p1 -b .glibc23
%patch22 -p1 -b .nphcgi
%patch23 -p1 -b .proxy
%patch24 -p1 -b .range
%patch26 -p1 -b .pipelog
%patch27 -p1 -b .rwmap
%patch28 -p1 -b .stream
%patch29 -p1 -b .subreq
%patch30 -p1 -b .sslexcl
%patch31 -p1 -b .include
%patch32 -p1 -b .graceful
%patch33 -p1 -b .rand
%patch40 -p0 -b .cnfdir %patch40 -p0 -b .cnfdir
%patch41 -p0 -b .redhat %patch41 -p0 -b .redhat
%patch42 -p0 -b .xfsz %patch42 -p0 -b .xfsz
%patch43 -p0 -b .pod %patch43 -p0 -b .pod
%patch44 -p1 -b .prctl %patch44 -p0 -b .noshmht
%patch45 -p0 -b .leaks
%patch60 -p1 -b .can0840 # no -b to prevent droplets in install root.
%patch60 -p1
%patch61 -p1 -b .can0843 %patch61 -p1 -b .can0843
%patch62 -p1 -b .can0132 %patch62 -p1 -b .can0020
%patch63 -p1 -b .can0020
%patch64 -p1 -b .fdleak
%patch65 -p1 -b .can0083
%patch66 -p1 -b .can0245
%patch68 -p1 -b .can0192
%patch69 -p1 -b .can0253
%patch70 -p1 -b .can0254
%patch71 -p1 -b .vu379828
%patch72 -p1 -b .can0542
# copy across the migration guide and sed it's location into apachectl # Safety check: prevent build if defined MMN does not equal upstream MMN.
cp $RPM_SOURCE_DIR/migration.{html,css} . vmmn=`echo MODULE_MAGIC_NUMBER_MAJOR | cpp -include \`pwd\`/include/ap_mmn.h | grep -v '#'`
if test "x${vmmn}" != "x%{mmn}"; then
: Error: Upstream MMN is now ${vmmn}, packaged MMN is %{mmn}.
: Update the mmn macro and rebuild.
exit 1
fi
# update location of migration guide in apachectl
%{__perl} -pi -e "s:\@docdir\@:%{_docdir}/%{name}-%{version}:g" \
support/apachectl.in
# regenerate configure scripts # regenerate configure scripts
./buildconf ./buildconf
%build # Before configure; fix location of build dir in generated apxs
# Fix version in apachectl %{__perl} -pi -e "s:\@exp_installbuilddir\@:%{_libdir}/httpd/build:g" \
%{__perl} -pi -e "s:\@docdir\@:%{_docdir}/%{name}-%{version}:g" \ support/apxs.in
support/apachectl.in
CFLAGS="$RPM_OPT_FLAGS" \ %build
AP_LIBS="-lssl -lcrypto" \ # build the migration guide
./configure \ xmlto --skip-validation -x $RPM_SOURCE_DIR/html.xsl html-nochunks $RPM_SOURCE_DIR/migration.xml
cp $RPM_SOURCE_DIR/migration.css . # make %%doc happy
if pkg-config openssl ; then
# configure -C barfs with trailing spaces in CFLAGS
CFLAGS="$RPM_OPT_FLAGS `pkg-config --cflags openssl | sed 's/ *$//'`"
AP_LIBS="$AP_LIBS `pkg-config --libs openssl`"
else
CFLAGS="$RPM_OPT_FLAGS"
AP_LIBS="-lssl -lcrypto"
fi
export CFLAGS
export AP_LIBS
function mpmbuild()
{
mpm=$1; shift
mkdir $mpm; pushd $mpm
cat > config.cache <<EOF
ac_cv_func_pthread_mutexattr_setpshared=no
ac_cv_func_sem_open=no
EOF
../configure -C \
--prefix=%{_sysconfdir}/httpd \ --prefix=%{_sysconfdir}/httpd \
--exec-prefix=%{_prefix} \ --exec-prefix=%{_prefix} \
--bindir=%{_bindir} \ --bindir=%{_bindir} \
--sbindir=%{_sbindir} \ --sbindir=%{_sbindir} \
--mandir=%{_mandir} \ --mandir=%{_mandir} \
--libdir=%{_libdir} \
--sysconfdir=%{_sysconfdir}/httpd/conf \ --sysconfdir=%{_sysconfdir}/httpd/conf \
--includedir=%{_includedir}/httpd \ --includedir=%{_includedir}/httpd \
--libexecdir=%{_libdir}/httpd/modules \ --libexecdir=%{_libdir}/httpd/modules \
--datadir=%{contentdir} \ --datadir=%{contentdir} \
--with-mpm=prefork \ --with-mpm=$mpm \
--enable-mods-shared=all \
--enable-suexec --with-suexec \ --enable-suexec --with-suexec \
--with-suexec-caller=%{suexec_caller} \ --with-suexec-caller=%{suexec_caller} \
--with-suexec-docroot=%{contentdir} \ --with-suexec-docroot=%{contentdir} \
--with-suexec-logfile=%{_localstatedir}/log/httpd/suexec.log \ --with-suexec-logfile=%{_localstatedir}/log/httpd/suexec.log \
--with-suexec-bin=%{_sbindir}/suexec \ --with-suexec-bin=%{_sbindir}/suexec \
--with-suexec-uidmin=500 --with-suexec-gidmin=500 \ --with-suexec-uidmin=500 --with-suexec-gidmin=500 \
--with-devrandom=/dev/urandom \ $*
make %{?_smp_mflags}
popd
}
# Only bother enabling optional modules for main build.
mpmbuild prefork --enable-mods-shared=all \
--enable-ssl --with-ssl \ --enable-ssl --with-ssl \
--enable-deflate \ --enable-deflate --enable-cgid \
--enable-proxy --enable-proxy-connect \ --enable-proxy --enable-proxy-connect \
--enable-proxy-http --enable-proxy-ftp --enable-proxy-http --enable-proxy-ftp
make %{?_smp_mflags}
# To prevent most modules being built statically into httpd.worker,
# easiest way seems to be enable them shared.
mpmbuild worker --enable-mods-shared=all
# Verify that the same modules were built into the two httpd binaries
./prefork/httpd -l | grep -v prefork > prefork.mods
./worker/httpd -l | grep -v worker > worker.mods
if ! diff -u prefork.mods worker.mods; then
: Different modules built into httpd binaries, will not proceed
exit 1
fi
%install %install
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
@ -196,10 +215,11 @@ sed -e "1s/logresolve 8/logresolve 1/" \
< docs/man/logresolve.8 > docs/man/logresolve.1 < docs/man/logresolve.8 > docs/man/logresolve.1
rm docs/man/logresolve.8 rm docs/man/logresolve.8
pushd prefork
make DESTDIR=$RPM_BUILD_ROOT install make DESTDIR=$RPM_BUILD_ROOT install
popd
### remove this # install worker binary
# strip -g $RPM_BUILD_ROOT%{_libdir}/httpd/modules/*.so install -m 755 worker/.libs/httpd $RPM_BUILD_ROOT%{_sbindir}/httpd.worker
# install conf file/directory # install conf file/directory
mkdir $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d mkdir $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d
@ -245,11 +265,9 @@ ln -s ../../../..%{_bindir}/libtool $RPM_BUILD_ROOT%{_libdir}/httpd/build/libtoo
sed -e "s|%{contentdir}/build|%{_libdir}/httpd/build|g" \ sed -e "s|%{contentdir}/build|%{_libdir}/httpd/build|g" \
-e "/AP_LIBS/d" -e "/abs_srcdir/d" \ -e "/AP_LIBS/d" -e "/abs_srcdir/d" \
-e "/^LIBTOOL/s|/[^ ]*/libtool|%{_bindir}/libtool|" \ -e "/^LIBTOOL/s|/[^ ]*/libtool|%{_bindir}/libtool|" \
-e "s|^EXTRA_INCLUDES.*$|EXTRA_INCLUDES = -I\$(includedir) -I%{_includedir}/openssl|g" \ -e "/^EXTRA_INCLUDES/s|-I$RPM_BUILD_DIR[^ ]* ||g" \
< build/config_vars.mk \ < prefork/build/config_vars.mk \
> $RPM_BUILD_ROOT%{_libdir}/httpd/build/config_vars.mk > $RPM_BUILD_ROOT%{_libdir}/httpd/build/config_vars.mk
install -m 644 build/special.mk \
$RPM_BUILD_ROOT%{_libdir}/httpd/build/special.mk
# Make the MMN accessible to module packages # Make the MMN accessible to module packages
echo %{mmn} > $RPM_BUILD_ROOT%{_includedir}/httpd/.mmn echo %{mmn} > $RPM_BUILD_ROOT%{_includedir}/httpd/.mmn
@ -296,6 +314,16 @@ sed -e "s|/usr/local/apache2/conf/httpd.conf|/etc/httpd/conf/httpd.conf|" \
-e "s|/usr/local/apache2|/etc/httpd|" < docs/man/httpd.8 \ -e "s|/usr/local/apache2|/etc/httpd|" < docs/man/httpd.8 \
> $RPM_BUILD_ROOT%{_mandir}/man8/httpd.8 > $RPM_BUILD_ROOT%{_mandir}/man8/httpd.8
# Remove unpackaged files
rm -f $RPM_BUILD_ROOT%{_libdir}/libapr{,util}.{a,la} \
$RPM_BUILD_ROOT%{_libdir}/APRVARS $RPM_BUILD_ROOT%{_libdir}/*.exp \
$RPM_BUILD_ROOT/etc/httpd/conf/mime.types \
$RPM_BUILD_ROOT%{_libdir}/httpd/modules/*.exp \
$RPM_BUILD_ROOT%{_bindir}/ap?-config \
$RPM_BUILD_ROOT%{_sbindir}/{checkgid,dbmmanage,envvars*} \
$RPM_BUILD_ROOT%{contentdir}/htdocs/* \
$RPM_BUILD_ROOT%{contentdir}/cgi-bin/*
%pre %pre
# Add the "apache" user # Add the "apache" user
/usr/sbin/useradd -c "Apache" -u 48 \ /usr/sbin/useradd -c "Apache" -u 48 \
@ -366,6 +394,7 @@ rm -rf $RPM_BUILD_ROOT
%{_bindir}/ht* %{_bindir}/ht*
%{_bindir}/logresolve %{_bindir}/logresolve
%{_sbindir}/httpd %{_sbindir}/httpd
%{_sbindir}/httpd.worker
%{_sbindir}/apachectl %{_sbindir}/apachectl
%{_sbindir}/rotatelogs %{_sbindir}/rotatelogs
%attr(4510,root,%{suexec_caller}) %{_sbindir}/suexec %attr(4510,root,%{suexec_caller}) %{_sbindir}/suexec
@ -433,33 +462,48 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/httpd/build/libtool %{_libdir}/httpd/build/libtool
%changelog %changelog
* Tue Oct 28 2003 Joe Orton <jorton@redhat.com> 2.0.40-11.8 * Mon Feb 24 2003 Joe Orton <jorton@redhat.com> 2.0.40-21
- add security fixes for CVE CAN-2003-0542 - add security fix for CAN-2003-0020; replace non-printable characters
- return test page for "/+" in default httpd.conf with '!' when printing to error log.
- add bug fixes for #103049, #105725, #106454 - disable debuginfo on IA64.
- add fixes for CGI regressions in -21.5 (#103744)
* Wed Jul 9 2003 Joe Orton <jorton@redhat.com> 2.0.40-11.7 * Tue Feb 11 2003 Joe Orton <jorton@redhat.com> 2.0.40-20
- add security fixes for CVE CAN-2003-0192, CAN-2003-0253, - disable POSIX semaphores to support 2.4.18 kernel (#83324)
CAN-2003-0254, CERT VU#379828
- add bug fixes for #78019, #82985, #85022, #97111, #98545, #98653
- install special.mk, fix apxs -q LIBTOOL (#92313)
- add mod_include fixes from upstream
* Tue May 27 2003 Joe Orton <jorton@redhat.com> 2.0.40-11.6 * Wed Jan 29 2003 Joe Orton <jorton@redhat.com> 2.0.40-19
- add mod_ssl renegotiation fix - require xmlto 0.0.11 or later
- fix apr_strerror on glibc2.3
* Thu May 22 2003 Joe Orton <jorton@redhat.com> 2.0.40-11.5 * Wed Jan 22 2003 Tim Powers <timp@redhat.com> 2.0.40-18
- rebuild - rebuilt
* Mon May 12 2003 Joe Orton <jorton@redhat.com> 2.0.40-11.4 * Thu Jan 16 2003 Joe Orton <jorton@redhat.com> 2.0.40-17
- add security fix for CAN-2003-0245 - add mod_cgid and httpd binary built with worker MPM (#75496)
- add bug fixes for #89179, #88575, #89086 - allow choice of httpd binary in init script
- pick appropriate CGI module based on loaded MPM in httpd.conf
- source /etc/sysconfig/httpd in apachectl to get httpd choice
- make "apachectl status" fail gracefully when links isn't found (#78159)
* Tue Apr 1 2003 Joe Orton <jorton@redhat.com> 2.0.40-11.3 * Mon Jan 13 2003 Joe Orton <jorton@redhat.com> 2.0.40-16
- add security fixes for CAN-2003-0020, CAN-2003-0132, CAN-2003-0083 - rebuild for OpenSSL 0.9.7
- add security fix for file descriptor leaks, #82142
- add bug fixes for #73428, #82587, #86254 * Fri Jan 3 2003 Joe Orton <jorton@redhat.com> 2.0.40-15
- fix possible infinite recursion in config dir processing (#77206)
- fix memory leaks in request body processing (#79282)
* Thu Dec 12 2002 Joe Orton <jorton@redhat.com> 2.0.40-14
- remove unstable shmht session cache from mod_ssl
- get SSL libs from pkg-config if available (Nalin Dahyabhai)
- stop "apxs -a -i" from inserting AddModule into httpd.conf (#78676)
* Wed Nov 6 2002 Joe Orton <jorton@redhat.com> 2.0.40-13
- fix location of installbuilddir in apxs when libdir!=/usr/lib
* Wed Nov 6 2002 Joe Orton <jorton@redhat.com> 2.0.40-12
- pass libdir to configure; clean up config_vars.mk
- package instdso.sh, fixing apxs -i (#73428)
- prevent build if upstream MMN differs from mmn macro
- remove installed but unpackaged files
* Wed Oct 9 2002 Joe Orton <jorton@redhat.com> 2.0.40-11 * Wed Oct 9 2002 Joe Orton <jorton@redhat.com> 2.0.40-11
- correct SERVER_NAME encoding in i18n error pages (thanks to Andre Malo) - correct SERVER_NAME encoding in i18n error pages (thanks to Andre Malo)

940
migration.xml Normal file
View File

@ -0,0 +1,940 @@
<?xml version='1.0'?> <!-- -*- text -*- -->
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY httpd "<literal>httpd</literal>">
<!ENTITY httpdconf "<filename>httpd.conf</filename>">
<!ENTITY mod_ssl "<literal>mod_ssl</literal>">
<!ENTITY mod_proxy "<literal>mod_proxy</literal>">
<!ENTITY mod_include "<literal>mod_include</literal>">
<!ENTITY mod_auth_db "<literal>mod_auth_db</literal>">
<!ENTITY mod_auth_dbm "<literal>mod_auth_dbm</literal>">
<!ENTITY mod_perl "<literal>mod_perl</literal>">
<!ENTITY mod_python "<literal>mod_python</literal>">
<!ENTITY htdbm "<command>htdbm</command>">
<!ENTITY dbmmanage "<command>dbmmanage</command>">
]>
<article>
<artheader>
<title>Apache Migration HOWTO</title>
<abstract>
<para>This HOWTO covers the migration of Red Hat Linux webservers from
Red Hat's Apache 1.3 packages to Red Hat's Apache 2.0 packages. It
explains the relevant differences between the 1.3 and 2.0 packages,
and describes the process required to migrate your server's
configuration from 1.3 to 2.0.</para>
</abstract>
</artheader>
<sect1>
<title>Naming and filesystem changes</title>
<sect2>
<title>Packaging changes</title>
<para>When using RPM to administer your system you should be aware
that some packages have been renamed, some have been incorporated into
others, and some have been deprecated. The major changes are that the
<literal>apache</literal>, <literal>apache-devel</literal> and
<literal>apache-manual</literal> packages have been renamed as
&httpd;, <literal>httpd-devel</literal> and
<literal>httpd-manual</literal>, and that the
<literal>mod_dav</literal> package has been incorporated into the
&httpd; package.</para>
<para>A complete breakdown of the packaging changes can be found in
<xref linkend="pkgchanges"/>.</para>
</sect2>
<sect2>
<title>Filesystem changes</title>
<para>The single major change to the filesystem layout is that there
is now a directory, <filename>/etc/httpd/conf.d</filename>, into which
the configuration files for individually packaged modules (&mod_ssl;,
<literal>php</literal>, &mod_perl; and so on) are placed. The server
is instructed to load configuration files from this location by the
directive <literal>Include conf.d/*.conf</literal> within
<filename>/etc/httpd/conf/httpd.conf</filename>, so it is vital that
this line be inserted when migrating an existing configuration.</para>
<para>Of the many minor changes, the most important to be aware of are
that the utility programs <command>ab</command> and
<command>logresolve</command> have been moved from
<filename>/usr/sbin</filename> to <filename>/usr/bin</filename>, which
will cause scripts with absolute paths to these binaries to fail; the
&dbmmanage; command has been replaced by &htdbm; (see <xref
linkend="mod_auth_dbm"/>); the logrotate configuration file has been
renamed from <filename>/etc/logrotate.d/apache</filename> to
<filename>/etc/logrotate.d/httpd</filename>.</para>
<!--
<para>A complete breakdown of the filesystem changes can be found in
<xref linkend="fschanges"/>.</para>
-->
</sect2>
</sect1>
<sect1>
<title>Migrating your configuration</title>
<para>If you have upgraded your server from a previous version of Red
Hat Linux upon which Apache was installed then the stock configuration
file from the Apache 2.0 package will have been created as
<filename>/etc/httpd/conf/httpd.conf.rpmnew</filename>, leaving your
original &httpdconf; untouched. It is, of course, entirely up to you
whether you use the new configuration file and migrate your old
settings to it, or use your existing file as a base and modify it to
suit, however some parts of the file have changed more than others and
a mixed approach is generally the best. The stock configuration files
for both 1.3 and 2.0 are divided into three sections, and for each of
these this document will suggest what is hopefully the easiest
route.</para>
<para>If your &httpdconf; is a modified version of the default Red Hat
one and you have saved a copy of the original then you may find the
<command>diff</command> command comes in handy. Invoked as:
<informalexample>
<programlisting>
diff -u httpd.conf.orig httpd.conf | less
</programlisting>
</informalexample>
for example, it will highlight the modifications you have made. If
you do not have a copy of the original file all is not lost, since it
is possible to extract it from an RPM package using the
<command>rpm2cpio</command> and <command>cpio</command> commands, for
example:
<informalexample>
<programlisting>
rpm2cpio apache-1.3.23-11.i386.rpm | cpio -i --make
</programlisting>
</informalexample>
Finally, it is useful to know that Apache has a testing mode to check
your configuration for errors. This may be invoked as:
<informalexample>
<programlisting>
apachectl configtest
</programlisting>
</informalexample>
</para>
<sect2>
<title>Global Environment</title>
<para>The global environment section of the configuration file
contains directives which affect the overall operation of Apache, such
as the number of concurrent requests it can handle and the locations of
the various files it uses. This section requires a large number of
changes compared with the others and it is therefore recommended that
you base this section on the Apache 2.0 configuration file and migrate
your old settings into it.</para>
<sect3>
<title>Selecting which interfaces and ports to bind to</title>
<para>The <literal>BindAddress</literal> and <literal>Port</literal>
directives no longer exist: their functionality is now provided by a
more flexible <literal>Listen</literal> directive.</para>
<para>If you had set <literal>Port 80</literal> you should change it
to <literal>Listen 80</literal> instead. If you had set
<literal>Port</literal> to some other value then you should also
append the port number to the contents of your
<literal>ServerName</literal> directive:</para>
<example>
<title>Apache 1.3 port configuration</title>
<programlisting>
Port 123
ServerName www.example.com
</programlisting>
</example>
<example>
<title>Equivalent Apache 2.0 port configuration</title>
<programlisting>
<emphasis role="bold">Listen</emphasis> 123
ServerName www.example.com<emphasis role="bold">:123</emphasis>
</programlisting>
</example>
<para>See also:
<itemizedlist>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/mpm_common.html#listen"><literal>Listen</literal></ulink></listitem>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/core.html#servername"><literal>ServerName</literal></ulink></listitem>
</itemizedlist></para>
</sect3>
<sect3>
<title>Server-pool size regulation</title>
<para>In Apache 2.0, the responsibility for accepting requests and
dispatching children to handle them has been abstracted into a group
of modules called Multi-Processing Modules (MPMs); the original Apache
1.3 behaviour has now been moved into the prefork MPM.</para>
<para>The MPM supplied by default on Red Hat Linux is prefork which
accepts the same directives (<literal>StartServers</literal>,
<literal>MinSpareServers</literal>,
<literal>MaxSpareServers</literal>, <literal>MaxClients</literal> and
<literal>MaxRequestsPerChild</literal>) as Apache 1.3 and as such the
values of these directives may be migrated across directly.</para>
<para>In the stock Apache 2.0 configuration file you may notice
directives for two other MPMs: worker and perchild. Currently only
the prefork MPM is available on Red Hat Linux, although other MPMs may
be made available at some later date.</para>
<para>See also:
<itemizedlist>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mpm.html">Apache
Multi-Processing Modules</ulink></listitem>
</itemizedlist></para>
</sect3>
<sect3 id="dsosupport">
<title>Dynamic Shared Object (DSO) Support</title>
<para>There are many changes required here and it is highly
recommended that anyone trying to modify an Apache 1.3 configuration
to suit Apache 2.0 (as opposed to migrating your changes into the
Apache 2.0 configuration) simply copy this section from the stock Red
Hat Linux Apache 2.0 configuration. If you do decide to try and
modify your original file, please note that it is of paramount
importance that your &httpdconf; contains the following directive:
<informalexample>
<programlisting>
#
# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/*.conf
</programlisting>
</informalexample>
Omission of this directive will result in the failure of all modules
packaged in their own RPMs (&mod_ssl;, <literal>php</literal>,
&mod_perl; and the like).</para>
<para>Those who still don't want to simply copy the section from the
stock Apache 2.0 configuration should note the following:</para>
<itemizedlist>
<listitem><para>The <literal>AddModule</literal> and
<literal>ClearModuleList</literal> directives no longer exist. These
directives where used to ensure that modules could be enabled in the
correct order. The new Apache 2.0 API allows modules to explicitly
specify their ordering, eliminating the need for these
directives.</para></listitem>
<listitem><para>The order of the <literal>LoadModule</literal> lines
is thus no longer relevant.</para></listitem>
<listitem><para>Many modules have been added, removed, renamed, split
up, or incorporated with each other.</para></listitem>
<listitem><para><literal>LoadModule</literal> lines for modules
packaged in their own RPMs (&mod_ssl;, <literal>php</literal>,
&mod_perl; and the like) are no longer necessary as they can be found
in the relevant file in the directory
<filename>/etc/httpd/conf.d</filename>.</para></listitem>
<listitem><para>The various <literal>HAVE_XXX</literal> definitions
are no longer defined.</para></listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Other changes</title>
<para>The <literal>ServerType</literal> directive has been removed in
Apache 2.0 which can only be run as <literal>ServerType
standalone</literal>.</para>
<para>The <literal>AccessConfig</literal> and
<literal>ResourceConfig</literal> directives have been removed since
they mirror the functionality of the <literal>Include</literal>
directive. If you have <literal>AccessConfig</literal> and
<literal>ResourceConfig</literal> directives set then you need to
replace these with <literal>Include</literal> directives. To ensure
that the files are read in the order implied by the older directives
the <literal>Include</literal> directives should be placed at the end
of &httpdconf;, with the one corresponding to
<literal>ResourceConfig</literal> preceeding the one corresponding to
<literal>AccessConfig</literal>. If you were making use of the
default values you will need to include them explicitly as
<filename>conf/srm.conf</filename> and
<filename>conf/access.conf</filename>.</para>
</sect3>
</sect2>
<sect2 id="mainserverconfig">
<title>Main server configuration</title>
<para>The main server configuration section of the configuration file
sets up the main server, which responds to any requests that aren't
handled by a <literal>&lt;VirtualHost&gt;</literal> definition.
Values here also provide defaults for any
<literal>&lt;VirtualHost&gt;</literal> containers you may
define.</para>
<para>The directives used in this section have changed little between
Apache 1.3 and Apache 2.0, so if your main server configuration is
heavily customised you may find it easier to modify your existing
configuration to suit Apache 2.0. Users with only lightly customised
main server sections are recommended to migrate their changes into the
stock Apache 2.0 configuration.</para>
<sect3>
<title>UserDir mapping</title>
<para>The <literal>UserDir</literal> directive is used to enable URLs
such as <filename>http://example.com/~jim/</filename> to map to a
directory in the home directory of the user <literal>jim</literal>,
such as <filename>/home/jim/public_html</filename>. A side-effect of
this feature allows a potential attacker to determine whether a given
username is present on the system, so the default configuration for
Apache 2.0 does not enable <literal>UserDir</literal>.</para>
<para>To enable <literal>UserDir</literal> mapping, change the
directive:
<informalexample>
<programlisting>
UserDir disable
</programlisting>
</informalexample>
to
<informalexample>
<programlisting>
UserDir public_html
</programlisting>
</informalexample>
in <filename>/etc/httpd/conf/httpd.conf</filename>.</para>
<para>See also:
<itemizedlist>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/mod_userdir.html#userdir"><literal>UserDir</literal></ulink></listitem>
</itemizedlist></para>
</sect3>
<sect3>
<title>Logging</title>
<para>The <literal>AgentLog</literal>, <literal>RefererLog</literal>
and <literal>RefererIgnore</literal> directives have been removed.
Agent and referer logs are still available using the
<literal>CustomLog</literal> and <literal>LogFormat</literal>
directives.</para>
<para>See also:
<itemizedlist>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/mod_log_config.html#customlog"><literal>CustomLog</literal></ulink></listitem>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/mod_log_config.html#logformat"><literal>LogFormat</literal></ulink></listitem>
</itemizedlist></para>
</sect3>
<sect3>
<title>Directory Indexing</title>
<para>The deprecated <literal>FancyIndexing</literal> directive has
now been removed. The same functionality is available through the
<literal>FancyIndexing</literal> option to the
<literal>IndexOptions</literal> directive.</para>
<para>The new <literal>VersionSort</literal> option to the
<literal>IndexOptions</literal> directive causes files containing
version numbers to be sorted in the natural way, so that
<filename>apache-1.3.9.tar</filename> would appear before
<filename>apache-1.3.12.tar</filename> in a directory index page.</para>
<para>The defaults for the <literal>ReadmeName</literal> and
<literal>HeaderName</literal> directives have changed from
<filename>README</filename> and <filename>HEADER</filename> to
<filename>README.html</filename> and
<filename>HEADER.html</filename>.</para>
<para>See also:
<itemizedlist>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/mod_autoindex.html#indexoptions"><literal>IndexOptions</literal></ulink></listitem>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/mod_autoindex.html#readmename"><literal>ReadmeName</literal></ulink></listitem>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/mod_autoindex.html#headername"><literal>HeaderName</literal></ulink></listitem>
</itemizedlist></para>
</sect3>
<sect3>
<title>Content Negotiation</title>
<para>The <literal>CacheNegotiatedDocs</literal> directive now takes
the argument: on or off. Existing instances of
<literal>CacheNegotiatedDocs</literal> should be replaced with
<literal>CacheNegotiatedDocs on</literal>.</para>
<para>See also:
<itemizedlist>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/mod_negotiation.html#cachenegotiateddocs"><literal>CacheNegotiatedDocs</literal></ulink></listitem>
</itemizedlist></para>
</sect3>
<sect3>
<title>Error Documents</title>
<para>To use a hard-coded message with the
<literal>ErrorDocument</literal> directive, the message should be
enclosed in a pair of double quotes, rather than just preceded by a
double quote as required in Apache 1.3. For instance, change:
<informalexample>
<programlisting>
ErrorDocument 404 "The document was not found
</programlisting>
</informalexample>
to
<informalexample>
<!-- " character might not come out in bold depending on font, oh well -->
<programlisting>
ErrorDocument 404 "The document was not found<emphasis role="bold">&quot;</emphasis>
</programlisting>
</informalexample>
</para>
<para>See also:
<itemizedlist>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/core.html#errordocument"><literal>ErrorDocument</literal></ulink></listitem>
</itemizedlist></para>
</sect3>
</sect2>
<sect2>
<title>Virtual Hosts</title>
<para>The contents of all <literal>&lt;VirtualHost&gt;</literal>
containers should be migrated in the same way as the main server
section as described in <xref linkend="mainserverconfig"/>. Note that
the SSL virtual host context has been moved into the file
<filename>/etc/httpd/conf.d/ssl.conf</filename>.</para>
<para>See also:
<itemizedlist>
<listitem><ulink url="http://httpd.apache.org/docs-2.0/vhosts/">Apache
Virtual Host Documentation</ulink></listitem>
</itemizedlist></para>
</sect2>
<sect2 id="modules">
<title>Modules</title>
<para>In Apache 2.0 the module system has been changed to allow
modules to be chained together to combine them in new and interesting
ways. CGI scripts, for example, can generate server-parsed HTML
documents which can then be processed by &mod_include;. The
possibilities are only limited by the bounds of your
imagination.</para>
<para>The way this actually works is that each request is served by
exactly one <emphasis>handler</emphasis> module followed by zero or
more <emphasis>filter</emphasis> modules. Under Apache 1.3, for
example, a PHP script would be handled in it's entirity by the PHP
module; under Apache 2.0 the request is initially
<emphasis>handled</emphasis> by the core module (which serves static
files) and subsequently <emphasis>filtered</emphasis> by the PHP
module.</para>
<para>Exactly how to use this (and all the other new features of
Apache 2.0 for that matter) is beyond the scope of this document,
however the change has ramifications if you have used PATH_INFO
(trailing path information after the true filename) in a document
which is handled by a module that is now implemented as a filter. The
core module, which initially handles the request, does not by default
understand PATH_INFO and will serve 404 Not Found errors for requests
that have it. The <literal>AcceptPathInfo</literal> directive can be
used to coerce the core module into accepting requests with PATH_INFO:
<informalexample>
<programlisting>
AcceptPathInfo on
</programlisting>
</informalexample>
</para>
<para>See also:
<itemizedlist>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/core.html#acceptpathinfo"><literal>AcceptPathInfo</literal></ulink></listitem>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/handler.html">Apache's
Handler Use</ulink></listitem>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/filter.html">Filters</ulink></listitem>
</itemizedlist></para>
<sect3>
<title>mod_ssl</title>
<para>The configuration for &mod_ssl; has been moved from &httpdconf;
into the file <filename>/etc/httpd/conf.d/ssl.conf</filename>. For
this file to be loaded, and hence for &mod_ssl; to work, you must have
the statement <literal>Include conf.d/*.conf</literal> in your
&httpdconf; as described in <xref linkend="dsosupport"/>.</para>
<para><literal>ServerName</literal> directives in SSL virtual hosts
must explicitly specify the port number:</para>
<example>
<title>Apache 1.3 SSL virtual host configuration</title>
<programlisting>
##
## SSL Virtual Host Context
##
&lt;VirtualHost _default_:443&gt;
# General setup for the virtual host
ServerName ssl.host.name
...
&lt;/VirtualHost&gt;
</programlisting>
</example>
<example>
<title>Equivalent Apache 2.0 SSL virtual host configuration</title>
<programlisting>
##
## SSL Virtual Host Context
##
&lt;VirtualHost _default_:443&gt;
# General setup for the virtual host
ServerName ssl.host.name<emphasis role="bold">:443</emphasis>
...
&lt;/VirtualHost&gt;
</programlisting>
</example>
<para>See also:
<itemizedlist>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/mod_ssl.html">Apache
Module mod_ssl</ulink></listitem>
<listitem><ulink url="http://httpd.apache.org/docs-2.0/vhosts/">Apache
Virtual Host Documentation</ulink></listitem>
</itemizedlist></para>
</sect3>
<sect3>
<title>mod_proxy</title>
<para>Proxy access control statements are now placed inside a
<literal>&lt;Proxy&gt;</literal> block rather than a
<literal>&lt;Directory proxy:&gt;</literal>.</para>
<para>The caching functionality of the old &mod_proxy; has been split
out into three other modules (<literal>mod_cache</literal>,
<literal>mod_disk_cache</literal>, <literal>mod_file_cache</literal>),
although these generally use the same or similar directives as the old
&mod_proxy;.</para>
<para>See also:
<itemizedlist>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/mod_proxy.html">Apache
Module mod_proxy</ulink></listitem>
</itemizedlist></para>
</sect3>
<sect3>
<title>mod_include</title>
<para>&mod_include; is now implemented as a <link
linkend="modules">filter</link> and must therefore be enabled
differently:</para>
<example>
<title>Apache 1.3 &mod_include; configuration</title>
<programlisting>
AddType text/html .shtml
AddHandler server-parsed .shtml
</programlisting>
</example>
<example>
<title>Equivalent Apache 2.0 &mod_include; configuration</title>
<programlisting>
AddOutputFilter INCLUDES .shtml
</programlisting>
</example>
<para>Note that <literal>Options +Includes</literal> is still
required.</para>
<para>See also:
<itemizedlist>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/mod_include.html">Apache
Module mod_include</ulink></listitem>
</itemizedlist></para>
</sect3>
<sect3 id="mod_auth_dbm">
<title>mod_auth_dbm and mod_auth_db</title>
<para>Apache 1.3 supported two authentication modules, &mod_auth_db;
and &mod_auth_dbm;, which used Berkeley Databases and DBM databases
respectively. These modules have been combined into a single module
named &mod_auth_dbm; in Apache 2.0, which can access several different
database formats. To migrate from &mod_auth_db; in Apache 1.3,
configuration files should be adjusted by replacing
<literal>AuthDBUserFile</literal> and
<literal>AuthDBGroupFile</literal> with the &mod_auth_dbm; equivalents
<literal>AuthDBMUserFile</literal> and
<literal>AuthDBMGroupFile</literal>, and the directive
<literal>AuthDBMType DB</literal> should be added to indicate the type
of database file in use.</para>
<para><xref linkend="authex1"/> shows a sample &mod_auth_db;
configuration for Apache 1.3, and <xref linkend="authex2"/> shows how
it would be migrated to Apache 2.0. Note that the
<literal>AuthDBUserFile</literal> directive can also be used in
<filename>.htaccess</filename> files.</para>
<example id="authex1">
<title>Apache 1.3 &mod_auth_db; configuration</title>
<programlisting>
&lt;Location /private/>
AuthType Basic
AuthName "My Private Files"
AuthDBUserFile /var/www/authdb
require valid-user
&lt;/Location>
</programlisting>
</example>
<example id="authex2">
<title>Equivalent Apache 2.0 &mod_auth_dbm; configuration</title>
<programlisting>
&lt;Location /private/>
AuthType Basic
AuthName "My Private Files"
<emphasis role="bold">AuthDBMUserFile /var/www/authdb
AuthDBMType DB</emphasis>
require valid-user
&lt;/Location>
</programlisting>
</example>
<para>The &dbmmanage; Perl script, used to manipulate
username/password databases, has been replaced by the &htdbm; program
in Apache 2.0. &htdbm; offers equivalent functionality, and like
&mod_auth_dbm; can operate a variety of database formats; a
<literal>-T</literal> argument can be used to specify the format to
use for a particular command. <xref linkend="htdbm"/> shows how to
migrate from using &dbmmanage; on a DBM-format database with Apache
1.3, to &htdbm; in 2.0.</para>
<table id="htdbm">
<title>Migrating from &dbmmanage; to &htdbm;</title>
<tgroup cols="3" frame="none">
<thead><row>
<entry>Action</entry>
<entry>dbmmanage command (Apache 1.3)</entry>
<entry>Equivalent htdbm command (Apache 2.0)</entry>
</row></thead>
<!-- using literal's here not commands since commands come out bold
and the table looks a bit ugly -->
<tbody>
<row>
<entry>Add user to database (using given password)</entry>
<entry><literal>dbmmanage authdb add username password</literal></entry>
<entry><literal>htdbm -b -TDB authdb username password</literal></entry>
</row>
<row>
<entry>Add user to database (prompts for password)</entry>
<entry><literal>dbmmanage authdb adduser username</literal></entry>
<entry><literal>htdbm -TDB authdb username</literal></entry>
</row>
<row>
<entry>Remove user from database</entry>
<entry><literal>dbmmanage authdb delete username</literal></entry>
<entry><literal>htdbm -x -TDB authdb username</literal></entry>
</row>
<row>
<entry>List users in database</entry>
<entry><literal>dbmmanage authdb view</literal></entry>
<entry><literal>htdbm -l -TDB authdb</literal></entry>
</row>
<row>
<entry>Verify a password</entry>
<entry><literal>dbmmanage authdb check username</literal></entry>
<entry><literal>htdbm -v -TDB authdb username</literal></entry>
</row>
</tbody></tgroup>
</table>
<para>The <literal>-m</literal> and <literal>-s</literal> options work
with both &dbmmanage; and &htdbm; (enabling the use of the MD5 or SHA1
algorithms for hashing passwords, respectively). When creating a new
database with &htdbm;, the <literal>-c</literal> option must be
used.</para>
<!--
* migrating from DBM to DBM
-->
<para>See also:
<itemizedlist>
<listitem><ulink
url="http://httpd.apache.org/docs-2.0/mod/mod_auth_dbm.html">Apache
Module mod_auth_dbm</ulink></listitem>
</itemizedlist></para>
</sect3>
<sect3>
<title>PHP</title>
<para>The configuration for PHP has been moved from &httpdconf; into
the file <filename>/etc/httpd/conf.d/php.conf</filename>. For this
file to be loaded, and hence for PHP to work, you must have the
statement <literal>Include conf.d/*.conf</literal> in your &httpdconf;
as described in <xref linkend="dsosupport"/>.</para>
<para>PHP is now implemented as a <link
linkend="modules">filter</link> and must therefore be enabled
differently:</para>
<example>
<title>Apache 1.3 PHP configuration</title>
<programlisting>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</programlisting>
</example>
<example>
<title>Equivalent Apache 2.0 PHP configuration</title>
<programlisting>
&lt;Files *.php&gt;
SetOutputFilter PHP
SetInputFilter PHP
&lt;/Files&gt;
</programlisting>
</example>
<para>In PHP 4.2.0 and later the default set of predefined variables
which are available in the global scope has changed. Individual input
and server variables are by default no longer placed directly into the
global scope; rather, they are placed into a number superglobal
arrays. This change may cause scripts to break, and you may revert to
the old behaviour globally by setting
<literal>register_globals</literal> to <literal>On</literal> in the
file <filename>/etc/php.ini</filename> or more selectivly by using
<literal>php_value register_globals 1</literal> in your &httpdconf; or
in <filename>.htaccess</filename> files.</para>
<para>Another change is that short open tags are now disabled to make
it easier to develop PHP applications that serve XML or XHTML, so
scripts must use <literal>&lt;?php</literal> or <literal>&lt;script
language="php"&gt;</literal> rather than <literal>&lt;?</literal> to
denote PHP code. This change may cause scripts to break, and you may
revert to the old behaviour globally by setting
<literal>short_open_tag</literal> to <literal>On</literal> in the file
<filename>/etc/php.ini</filename>. Due to a bug in PHP it is not
possible to set this more selectivly with <literal>php_value</literal>
directives.</para>
<para>See also:
<itemizedlist>
<listitem><ulink
url="http://www.php.net/release_4_1_0.php">PHP 4.1.0 Release
Announcement</ulink> for details of the global scope changes</listitem>
</itemizedlist></para>
</sect3>
<sect3>
<title>mod_perl</title>
<para>The configuration for &mod_perl; has been moved from &httpdconf;
into the file <filename>/etc/httpd/conf.d/perl.conf</filename>. For
this file to be loaded, and hence for &mod_perl; to work, you must
have the statement <literal>Include conf.d/*.conf</literal> in your
&httpdconf; as described in <xref linkend="dsosupport"/>.</para>
<para>Occurances of <literal>Apache::</literal> in your &httpdconf;
must be replaced with <literal>ModPerl::</literal>. Additionally, the
manner in which handlers are registered has been changed, for
example:</para>
<example>
<title>Apache 1.3 &mod_perl; configuration</title>
<programlisting>
&lt;Directory /var/www/perl&gt;
SetHandler perl-script
PerlHandler Apache::Registry
Options +ExecCGI
&lt;/Directory&gt;
</programlisting>
</example>
<example>
<title>Equivalent Apache 2.0 &mod_perl; configuration</title>
<programlisting>
&lt;Directory /var/www/perl&gt;
SetHandler perl-script
<emphasis role="bold">PerlHandler ModPerl::Registry::handler</emphasis>
Options +ExecCGI
&lt;/Directory&gt;
</programlisting>
</example>
<para>Most modules for &mod_perl; 1.x should work without modification
with &mod_perl; 2.x. XS modules will require recompilation and may
possibly require minor Makefile modifications.</para>
<!--
<para>See also:
<itemizedlist>
<listitem><ulink
url="XXX_not_on_the_web">mod_perl: porting from 1.x</ulink></listitem>
</itemizedlist></para>
-->
</sect3>
<sect3>
<title>mod_python</title>
<para>The configuration for &mod_python; has been moved from &httpdconf;
into the file <filename>/etc/httpd/conf.d/python.conf</filename>. For
this file to be loaded, and hence for &mod_python; to work, you must
have the statement <literal>Include conf.d/*.conf</literal> in your
&httpdconf; as described in <xref linkend="dsosupport"/>.</para>
</sect3>
</sect2>
</sect1>
<!--
<sect1>
<title>Troubleshooting</title>
<para>XXX</para>
- help, I'm a dim bastard and neither read this document nor put the
Include directive in, and now mod_perl and php don't work - waaaaa!
- help, I didn't read the bit about PATH_INFO and now my CGI/SSI/PHP
stuff chokes - waaaaa!
</sect1>
-->
<appendix id="pkgchanges">
<title>Packaging Changes</title>
<itemizedlist>
<listitem><para>The <literal>apache</literal>,
<literal>apache-devel</literal> and <literal>apache-manual</literal>
packages have been renamed as &httpd;, <literal>httpd-devel</literal>
and <literal>httpd-manual</literal>.</para></listitem>
<listitem><para>The <literal>mod_dav</literal> package has been
incorporated into the &httpd; package.</para></listitem>
<listitem><para>The <literal>mod_put</literal> and
<literal>mod_roaming</literal> packages have been removed, since their
functionality is a subset of that provided by
<literal>mod_dav</literal>.</para></listitem>
<listitem><para>The <literal>mod_auth_any</literal> and
<literal>mod_bandwidth</literal> packages have been
removed.</para></listitem>
<listitem><para>&mod_ssl;'s version is now synchronised with &httpd;,
which means that the &mod_ssl; package for Apache 2.0 has a lower
version than &mod_ssl; package for 1.3.</para></listitem>
</itemizedlist>
</appendix>
<!--
<appendix id="fschanges">
<title>Filesystem Changes</title>
<para>XXX</para>
</appendix>
-->
</article>