这个答案假设您希望有两个域名,每个域名都运行单独的 Django 项目,但托管在同一个 Apache 服务器上。如果不是这种情况,请完善您的问题!
首先,您需要在您的 apache conf 中添加两个 VirtualHost 条目(我们将您的网站称为 domain1.co.uk 和 domain2.co.uk)
# Virtual hosts setup
NameVirtualHost *
<VirtualHost *>
ServerName domain1.co.uk
WSGIDaemonProcess APPLICATION_NAME processes=5 python-path=/opt/django/project/domain1:/home/USERNAME/webapps/APPLICATION_NAME/lib/python2.6 threads=1
WSGIScriptAlias / /opt/django/project/domain1/domain1.wsgi
</VirtualHost>
<VirtualHost *>
ServerName domain2.co.uk
WSGIDaemonProcess APPLICATION_NAME_www processes=5 python-path=/opt/django/project/domain2:/home/USERNAME/webapps/APPLICATION_NAME/lib/python2.6 threads=1
WSGIScriptAlias / /opt/django/project/domain2/domain2.wsgi
</VirtualHost>
您还需要 2 个 wsgi 文件(在上面的 conf 中指出两个)
/opt/django/project/domain1/domain1.wsgi
/opt/django/project/domain1/domain2.wsgi
看起来像
import os
import sys
from django.core.handlers.wsgi import WSGIHandler
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
# or project.domain1_settings
application = WSGIHandler()
在settings.py 上确保两个设置文件有区别SITE_ID = 1 或SITE_ID = 2 并且您指向正确的urls.py
ROOT_URLCONF = 'urls'
或
ROOT_URLCONF = 'domain1_urls'
这个问题大部分来自个人经验和blog 帖子。您的项目目录和域名似乎有点混乱,我已尽力将它们放置在此处的正确位置,但您需要根据自己的目的进行调整。
附加
如果您在同一台服务器上运行两个站点,则必须非常小心地保持项目目录、静态文件目录和设置文件等的一致性。
根据您的问题,您说您的设置文件是/opt/django/project/settings.py 和/opt/django/project/domain1_settings.py 这很令人困惑,因为您似乎有一个项目目录(/opt/django/project)。我强烈建议加强分离;正如我上面所描述的,也许在目录中设置你的项目(domain1 和domain2)
/opt/django/project/domain1/
/opt/django/project/domain2/
带有相应的设置文件
/opt/django/project/domain1/settings.py
/opt/django/project/domain2/settings.py
等等。这应该更容易发现哪里出了问题。