django 多域名多app 问题 --django-host
来源:互联网 发布:淘宝网推广方法ppt 编辑:程序博客网 时间:2024/04/30 04:37
场景
我们使用django 开发网站,一个项目下需要两个app,比如一个是天气预报,一个是交通。我们分别起名为weather_app,traffic_app。
如果使用一个域名,如www.test.com/weather 和www.test.com/traffic
这样不会引入是什么问题,直接使用django的urls解析没有问题。
但是如果想要专业点,使用weather.test.com对应 weather_app。traffic.test.com 对应 traffic_app 。如何实现呢
安装
我们这里可以安装这个插件 django-host
github地址 :https://github.com/jazzband/django-hosts
pip install django-host
配置
这里要提前说明下,我的部署环境是centos7下 nginx + uwsgi + django
多站点部署的前提是,你要对nginx uwsgi 已经有所了解,这样方便你理解我们在做什么。
1.添加'django_hosts'到 项目的settings 文件 INSTALLED_APP中;2.添加'django_hosts.middleware.HostsRequestMiddleware'到项目的settings 文件 MIDDLEWARE 中的开始位置;3.添加'django_hosts.middleware.HostsRequestMiddleware'到项目的settings 文件 MIDDLEWARE 中的结束位置;(就是前后都要放)4.在settings.py 所在的文件夹创建一个名叫host.py 的文件,写入下面的内容。
from django_hosts import patterns, host #导入django-hostfrom django.conf import settings #导入settingsfrom ss_update import views #导入app1,我的app1叫ss_updatefrom translate import views #导入app2,我的app2叫translatehost_patterns = patterns('', host(r'www', 'ss_update.urls', name='www'), #子域名,类似weather.test.com中的weather host(r'translate', 'translate.urls', name='translate'), #子域名,类似translate.test.com 中的translate)
5.在settings.py中,在ROOT_URLCONF之后增加 ROOT_HOSTCONF = '项目文件夹名.host' #不是app名6.在settings.py中,在ROOT_HOSTCONF之后增加DEFAULT_HOST='www' #这里在未匹配到正确的二级域名时,默认选择一个,默认的必须是你在host.py中设置的。否则启动时,会提示找不到。7.在不同的app下创建属于他们自己的urls.py 来替代原始的urls.py说到这里你应该明白了,django-host 的作用就是使得针对不同的二级域名,解析道它们对应的app下的urls.py
from django.conf.urls import urlfrom django.contrib import adminfrom views import *urlpatterns = [ url(r'^index$', index),]
这个就是类似你在不同app下创建urls.py的样子,注意from views import *
这个地方
到这里就设置好了。
uwsgi 和nginx 的配置就和一个app时一样。这个插件是从django的角度去解决多app,多域名的方法。貌似也是可以使用nginx 中的各种代理去配置,我个人还是喜欢这种方法。
还是简单的贴下我的配置文件。
uwsgi.ini
# myweb_uwsgi.ini file[uwsgi]# Django-related settingssocket =127.0.0.1:8000# the base directory (full path)chdir = /home/auto_ss #auto_ss为我的项目根目录# Django s wsgi filewsgi-file = auto_ss/wsgi.py #启动文件位置# mastermaster = truepy-autoreload = 1 #这个配置项,如果djaong文件变化自动重新加载,不用每次手动重启# maximum number of worker processesprocesses = 4threads = 2stats =127.0.0.1:9191buffer-size=32768
nginx配置文件
#第一个域名server { listen 80; server_name www.test.com; #root /usr/share/nginx/html; # Load configuration files for the default server block. #include /etc/nginx/default.d/*.conf; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; } }#第二个域名server { listen 80; server_name teanslate.test.com; #root /usr/share/nginx/html; # Load configuration files for the default server block. #include /etc/nginx/default.d/*.conf; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; } }
这个django-host 插件我也是摸索着用的,如果你有其中不理解不明白的,欢迎留言讨论。
阅读全文
0 0
- django 多域名多app 问题 --django-host
- django nginx 单域名 多站点 sessionid 冲突问题
- django多域名下Memcache的实现
- django 添加 app 路径问题
- 多个APP共存Django配置
- Django 多 app 同名 模版 引用
- Django多进程日志文件问题
- django 问题
- Django问题
- Django,ImageFiled 图片请求多APP 图片显示
- 如何在django下建立多个app
- 创建Django app步骤
- Django 中的 app
- django south [app]
- Django Hello World app
- python django recipe app
- django.app-AppConfig
- django app服务器搭建
- python_列表
- 安卓开发进阶之弹性布局FlexboxLayout--Part3(翻译)
- 模版
- OpenSSL中重要的命令 —— s_server 和s_client
- NYOJ:74-小学生算术
- django 多域名多app 问题 --django-host
- reorder-list
- NYOJ:75-日期计算
- 面向对象之多态
- 堆和栈
- Docker入门六部曲——Swarm
- 欢迎使用CSDN-markdown编辑器
- Linux终端仿真工具SecureCRT 7.3.5 下载与安装
- 泛型