6

有谁知道如何向 Django 添加多个域。我已经尝试按照这里的指南在单个 Django 项目下的多个站点没有运气。

我的配置看起来像这样

设置

/opt/django/project/settings.py

/opt/django/project/domain1_settings.py

网址

/opt/django/project/urls.py

/opt/django/project/domain1_urls.py

wsgi

/opt/django/project/domain1/domain1.wsgi

阿帕奇

/etc/httpd/conf.d/django.conf

<VirtualHost * >
  ServerName domain1.co.uk
  ServerAlias www.domain1.co.uk direct.domain1.co.uk
  WSGIDaemonProcess domain1 processes=5 python-path=/usr/bin/python threads=1
  WSGIScriptAlias / /opt/django/project/domain1/domain1.wsgi
  ErrorLog logs/domain1-error.log
  CustomLog logs/domain1-access.log common
</VirtualHost>

当我重新启动 apache 时,我没有看到任何错误,但是当我转到该站点时,我被发送到在主 httpd.conf 中配置的(非 django)域。

谢谢,

4

1 回答 1

14

这个答案假设您希望有两个域名,每个域名都运行单独的 Django 项目,但托管在同一个 Apache 服务器上。如果不是这种情况,请完善您的问题!

首先,您需要VirtualHost在您的 apache conf 中输入两个条目(让我们调用您的站点domain1.co.ukdomain2.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'

这个问题大部分来自个人经验和这篇文。您的项目目录和域名似乎有点混乱,我已尽力将它们放置在此处的正确位置,但您需要根据自己的目的进行调整。

额外的

如果您有两个站点从同一台服务器运行,则必须非常小心地保持项目目录、静态文件目录和设置文件等的一致性。从您的问题中,您说您的设置文件是/opt/django/project/settings.py并且 /opt/django/project/domain1_settings.py这看起来很令人困惑您有一个项目目录 ( /opt/django/project)。我强烈建议加强分离;正如我上面所描述的,也许将您的项目(domain1domain2)设置在目录中

/opt/django/project/domain1/
/opt/django/project/domain2/

带有相应的设置文件

/opt/django/project/domain1/settings.py
/opt/django/project/domain2/settings.py

等等。这应该可以更容易地发现哪里出了问题。

于 2013-02-19T18:23:31.837 回答