Ric*_*ckD 6 apache django virtualhost
有谁知道如何将多个域添加到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>
Run Code Online (Sandbox Code Playgroud)
当我重新启动apache时,我看到没有错误,但是当我访问该站点时,我被发送到主httpd.conf中配置的(非django)域.
谢谢,
dan*_*van 14
这个答案假设您希望有两个域名,每个域名运行单独的Django项目,但是从同一个Apache服务器托管.如果不是这样,请优化您的问题!
首先你需要两个VirtualHost在Apache的conf条目(我们称之为您的网站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>
Run Code Online (Sandbox Code Playgroud)
你还需要2个wsgi文件(在上面的conf中指向两个)
/opt/django/project/domain1/domain1.wsgi
/opt/django/project/domain1/domain2.wsgi
Run Code Online (Sandbox Code Playgroud)
并且会看起来像
import os
import sys
from django.core.handlers.wsgi import WSGIHandler
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
# or project.domain1_settings
application = WSGIHandler()
Run Code Online (Sandbox Code Playgroud)
到settings.py确保这两个设置文件有差异SITE_ID = 1或SITE_ID = 2和你指向正确的urls.py
ROOT_URLCONF = 'urls'
Run Code Online (Sandbox Code Playgroud)
要么
ROOT_URLCONF = 'domain1_urls'
Run Code Online (Sandbox Code Playgroud)
这个问题的大部分来自个人经验和这篇博客文章.您的项目目录和域名似乎有点令人困惑,我已尽力将它们放入正确的位置,但您需要根据自己的目的进行调整.
额外
如果你有两个站点从同一台服务器运行,你必须非常小心地保持项目目录,静态文件目录和设置文件等的一致性.从你的问题你说你的设置文件是/opt/django/project/settings.py和 /opt/django/project/domain1_settings.py这看起来很混乱,因为它似乎你有一个项目目录(/opt/django/project).我强烈建议加强分离; 如上所述,可能在目录中设置项目(domain1和domain2)
/opt/django/project/domain1/
/opt/django/project/domain2/
Run Code Online (Sandbox Code Playgroud)
使用相应的设置文件
/opt/django/project/domain1/settings.py
/opt/django/project/domain2/settings.py
Run Code Online (Sandbox Code Playgroud)
这应该可以更容易地发现哪里出了问题.
| 归档时间: |
|
| 查看次数: |
2905 次 |
| 最近记录: |