Django的多个站点

Django的多个站点,django,apache,virtualhost,Django,Apache,Virtualhost,有人知道如何向Django添加多个域吗。 我试着跟着导游走,但运气不好 我的配置如下所示 设置 /opt/django/project/settings.py /opt/django/project/domain1_settings.py Url /opt/django/project/url.py /opt/django/project/domain1_url.py wsgi /opt/django/project/domain1/domain1.wsgi Apache /etc/httpd/

有人知道如何向Django添加多个域吗。 我试着跟着导游走,但运气不好

我的配置如下所示

设置

/opt/django/project/settings.py

/opt/django/project/domain1_settings.py

Url

/opt/django/project/url.py

/opt/django/project/domain1_url.py

wsgi

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

Apache

/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>

ServerName域名1.co.uk
ServerAlias www.domain1.co.uk direct.domain1.co.uk
WSGIDaemonProcess domain1进程=5 python路径=/usr/bin/python线程=1
WSGIScriptAlias//opt/django/project/domain1/domain1.wsgi
ErrorLog日志/domain1-error.log
CustomLog日志/domain1-access.log公共
当我重新启动apache时,我没有看到任何错误,但是当我转到站点时,我被发送到主httpd.conf中配置的(非django)域


谢谢,

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

首先,在apache配置中需要两个
VirtualHost
条目(让我们调用您的站点
domain1.co.uk
domain2.co.uk

看起来就像

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
,并且您指向正确的
url.py

ROOT_URLCONF = 'urls'

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

附加的

如果有两个站点在同一台服务器上运行,则必须非常小心地维护项目目录、静态文件目录和设置文件等的一致性。 从您的问题中,您说您的设置文件是
/opt/django/project/settings.py
/opt/django/project/domain1\u 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

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

谢谢您的回复。我添加了您建议的设置,但我通过apache看到一个500错误。查看日志时,会显示无法导入我的新设置文件。新的设置文件位于maint项目文件夹中,我在wsgi文件中添加了一行,指向它---->os.environ['DJANGO_settings_MODULE']='domain1_settings',谢谢,在将正确的sys路径添加到我的wgsi文件并确保所有项目/应用程序导入都是常量之后,一切都开始工作。非常感谢。。。
ROOT_URLCONF = 'domain1_urls'
/opt/django/project/domain1/
/opt/django/project/domain2/
/opt/django/project/domain1/settings.py
/opt/django/project/domain2/settings.py