2013-02-17 74 views
6

有谁知道如何将多个域添加到Django。 我试过按照这里的指南Multiple Sites under single Django project没有运气。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

阿帕奇

/等/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)域。

感谢,

回答

13

这个答案让你想有每个正在运行的独立的Django项目二级域名的假设,但是来自同一Apache服务器所驻留。如果情况并非如此,请完善您的问题!

首先你需要在你的apache的conf 2个VirtualHost条目(我们称之为您的网站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 = 1SITE_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)。我强烈建议加强分离;正如我上面的描述,在目录

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

与相应的设置也许设置你的项目(domain1domain2)文件

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

等,这应该更容易被发现是怎么回事错在何处。

+0

感谢您的答复。我添加了你建议的设置,但我通过Apache看到了500错误。通过日志时,它显示它无法导入我的新设置文件。 新设置文件是MAINT项目文件夹中,我已经在我的WSGI文件指向它----> os.environ [“DJANGO_SETTINGS_MODULE”] =“domain1_settings” 谢谢, – felix001 2013-02-24 10:22:11

+0

添加后添加的行正确的系统路径到我的wgsi文件,并确保所有我的项目/应用程序导入是不断的一切开始工作。 许多非常感谢... – felix001 2013-02-24 18:31:12