.. _multiple-bz-dbs:

One Installation, Multiple Instances
####################################

This is a somewhat specialist feature; if you don't know whether you need it,
you don't. It is useful to admins who want to run many separate instances of
Bugzilla from a single installed codebase.

This is possible by using the ``PROJECT`` environment variable. When accessed,
Bugzilla checks for the existence of this variable, and if present, uses
its value to check for an alternative configuration file named
:file:`localconfig.<PROJECT>` in the same location as
the default one (:file:`localconfig`). It also checks for
customized templates in a directory named
:file:`<PROJECT>` in the same location as the
default one (:file:`template/<langcode>`). By default
this is :file:`template/en/default` so ``PROJECT``'s templates
would be located at :file:`template/en/PROJECT`.

To set up an alternate installation, just export ``PROJECT=foo`` before
running :command:`checksetup.pl` for the first time. Project names may
contain only letters, numbers, underscores, and hyphens. It will
result in a file called :file:`localconfig.foo` instead of
:file:`localconfig`. Edit this file as described above, with
reference to a new database, and re-run :command:`checksetup.pl`
to populate it. That's all.

Now you have to configure the web server to pass this environment
variable when accessed via an alternate URL, such as virtual host for
instance. The following is an example of how you could do it in Apache,
other Webservers may differ.

.. code-block:: apache

    <VirtualHost 12.34.56.78:80>
        ServerName bugzilla.example.com
        SetEnv PROJECT foo
    </VirtualHost>

Don't forget to also export this variable before accessing Bugzilla
by other means, such as repeating tasks like those above.
