这下面是我做了同样的方式。我借用http://michal.karzynski.pl/blog/2010/10/19/run-multiple-websites-one-django-project/
基本上,你会在你的http.conf文件中为每个域创建一个虚拟主机条目。
# Virtual hosts setup
NameVirtualHost *
<VirtualHost *>
ServerName example1.com
WSGIDaemonProcess APPLICATION_NAME processes=5 python-path=/home/USERNAME/webapps/APPLICATION_NAME:/home/USERNAME/webapps/APPLICATION_NAME/lib/python2.6 threads=1
WSGIScriptAlias//home/USERNAME/webapps/APPLICATION_NAME/domain1.wsgi
</VirtualHost>
<VirtualHost *>
ServerName example2.com
WSGIDaemonProcess APPLICATION_NAME_www processes=5 python-path=/home/USERNAME/webapps/APPLICATION_NAME:/home/USERNAME/webapps/APPLICATION_NAME/lib/python2.6 threads=1
WSGIScriptAlias//home/USERNAME/webapps/APPLICATION_NAME/domain2.wsgi
</VirtualHost>
然后,您需要为每个域创建两个不同的wsgi文件,并将它们放在保存项目的目录中。该WSGIScriptAlias是路径WSGI文件,以便确保它们是一样的...
例WSGI文件:
import os
import sys
from django.core.handlers.wsgi import WSGIHandler
os.environ['DJANGO_SETTINGS_MODULE'] = 'PROJECT_NAME.domain1_settings' # or PROJECT_NAME.domain2_settings
application = WSGIHandler()
然后,你需要创建两个额外的设置文件...所以你“马上有
settings.py
domain1_settings.py
domain2_settings.py
domain1_settings.py和domain2_settings.py将导入settings.py:domain1_settings.py的
例如:
from settings import *
SITE_ID = 1
ROOT_URLCONF = 'domain1_urls'
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
# other apps specific to this domain
)
最后,你要创建两个单独的网址文件..
domain1_urls.py和domain2_urls.py
domain1_urls.py将是SITE_ID 1,和domain2_urls默认。 py将是site_id 2的默认值。
嗨安德鲁, 谢谢,但你能解释一下如何使用mod_wsgi为每个站点创建apache虚拟主机,以及如何使用mod_wsgi动态地处理和传递请求到其各自的站点。每个网站都不会有自己的设置和网址吗?请咨询 – Joseph 2010-07-30 09:39:44
我还没有做到这一点,但我希望你可以为每个站点定义一个虚拟主机,配置为全部使用同一个django项目。然后在应用程序中,我想你会使用'Site.objects.get_current()'来选择例如各个站点的模板目录等。 – andrewmu 2010-07-30 10:49:45
您能否介绍一下我们如何配置所有站点的虚拟站点以配置为使用相同的django项目。我在这一部分非常困惑。请咨询 – Joseph 2010-07-30 12:48:50