Multi-Site Installation¶
For operating multiple websites using the same virtualenv you can use copies of
manage.py
, wsgi.py
and different versions of settings and the URL configuration
for each site. You can use the same database for different websites or, if you want a
stricter separation, different databases. You can define settings for all sites in a
file that is imported in the site-specific settings, e. g.
my_project/base_settings.py
. At the end of these site-specific settings you can
import local settings, which are not under version control, with SECRET_KEY, DATABASES,
ALLOWED_HOSTS etc., which may be site-specific or not.
Copy and edit
wsgi.py
andmanage.py
e. g. towsgi_second_site.py
andmanage_second_site.py
: Change the reference to the settings likeos.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings_second_site")
, if the settings are inmy_project/settings_second_site.py
. Do this for each site.In the site-specific settings import common base settings in the first line like
from .base_settings import *
and defineSITE_ID
,ROOT_URLCONF
,CMS_LANGUAGES
and other settings that should be different on the sites. This way all the items from the imported base settings can be overridden by later definitions:settings.second_site.py
:from .base_settings import * SITE_ID: int = 2 ROOT_URLCONF: str = 'my_project.urls_second_site' # other site-specific settings… from .settings_local import *
In the web server settings for a site you refer to the site-specific
wsgi*.py
likewsgi_second_site.py
.