There are several possible configurations for running multiple Drupal servers on the same hardware. You can separate them by directories or by vhosts, they can share configurations or split them or, in some cases, have a mixture, but all of these methods have at their heart the ./sites/domain_or_host_name/settings.php configuration file and the search-sequence where the Drupal program will search first for a configuration named for the current page and then to the current host before settling for the default.

General Rules for Multiple Drupal Deployments

Each of the possible multi-drupal scenarios is discussed in more detail in the sections that follow, but the general form for the alternate configuration filename is:

./sites/vhost.uri/settings.php

Note how the path separator ('/') must be changed to a dot. As an example, the vhost drupal.mysite.net may have one primary drupal server at the DOCUMENT_ROOT location, but a second site may begin at DOCUMENT_ROOT/altserver. For this case, the configuration file would be ./sites/drupal.mysite.net.altserver/settings.php

Note that in the case of having a separate site in a subdirectory such as DOCUMENT_ROOT/altserver in addition to the site configuration directory it is necessary to create a symlink from the subdirectory to the parent directory. In this case linking the DOCUMENT_ROOT directory to be called altserver. On IIS because symbolic links are not available it is necessary to create a virtual directory for /altserver in the IIS configuration.

Within that configuration file, the most common and minimal option is to set the $db_url that specifies the host, database and login for the Drupal tables, as well as the $base_url. But you can also include assignments to override anything in the VARIABLES table. This allows you to redefine the theme, the site footer and contact email, blocks per-page limits, even the name you use for anonymous.

Drupal IDs

When using multiple drupal servers on the same hardware, each new configuration will result in a new host component for the username@<i>host</i> Drupal login ID (used when logging into a foreign Drupal server). For example, if you have a directory partitioned host at drupal.mysite.net/altserver your usename to login to some other Drupal server would be USENAME@drupal.mysite.net/altserver.

Prefixing Database Tables to put them in One Database If you only have one database then it is necessary to use database table prefixing. See this handbook page for details on how to achieve that.