The Debian family of linux distributions share a common - heavily customised - Apache HTTPD configuration. Though they're not exactly alike (Gentoo for example makes use of the IfDefine directive for enabling features), this guide will attempt to point out where they differ from the 'standard' upstream configuration layout, as available from httpd.apache.org.

For a high level overview of these platforms, and others, see DistrosDefaultLayout

Module Configuration

The Debian apache package for version 2.0 and greater puts module configuration files in /etc/apache2/mods-available and for version 2.2 /etc/apache22/mods-available. These files are not loaded in to the server by default. In order to enable them, symlinks are made in the /etc/apache2/mods-enabled directory pointing back to mods-available. There is a command line tool available to automate this process called a2enmod.

~$ # to enable mod_rewrite, for example
~$ a2enmod rewrite

Similarly there's a command named a2dismod which simply removes the symlink.

VirtualHost Configuration

In much the same way that modules are enabled and disabled, sites (VirtualHosts) are kept in /etc/apache2/sites-available and symlinked to /etc/apache2/sites-enabled with the a2ensite and a2dissite commands.

#Example of creating a new site (ie, vhost) in Ubuntu:
~$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mytestsite
Password:<password>
#Use your favorite editor and don't forget to remove the 
#NameVirtualHost line if copying from default
#(you can't have two NameVirtualHost directives with the same argument)
~$ sudo vi /etc/apache2/sites-available/mytestsite
~$ sudo a2ensite
Which site would you like to enable?
Your choices are: default mytestsite
Site name? mytestsite
Site mytestsite installed; run /etc/init.d/apache2 reload to enable.
~$ sudo /etc/init.d/apache2 reload
 * Reloading apache 2.0 configuration...                                         [ ok ]

Bundled Documentation

For further details, see the docs available in:

/etc/apache2/README
/usr/share/doc/apache*/README.Debian*

Package List

A complete (and up-to-date) list of all Debian packages for Apache can be obtained from http://packages.debian.org all you need to do is ensure you search for the appropriate package for the version of apache you are using.

For example, libapache2-mod-auth-pam is for Apache httpd v2.0+

Where as libapache-mod-auth-pam is for Apache httpd v1.3

Mixing versions of packages and Apache httpd will result in the module not working, and Apache possibly failing to start.