zoukankan      html  css  js  c++  java
  • Django多域名配置之Django-hosts插件的使用

    使用场景:

    Django中有两个app,如果通过域名来访问,可以使用www.domain.com/a、www.domain.com/b来访问。这样就显得有点LowB了。如果我想通过a.domain.com、b.domain.com来访问两个app怎办?

    请使用django-host来实现。

    1、安装django-host 插件

    pip install django-host

    2、修改django配置 settings.py

    1.在 INSTALLED_APP 中注册 'django-host' 应用
    
    2.在 MIDDLEWARE 配置项的开始位置,添加 'django_hosts.middleware.HostsRequestMiddleware'
    
    3.在 MIDDLEWARE 配置项的结束位置,加'django_hosts.middleware.HostsRequestMiddleware'
    
    4.在 settings.py 文件同目录下创建 host.py 文件,添加如下内容:
    from django_hosts import patterns, host
    from django.conf import settings
    
    from APP1 import views
    from APP2 import views
    
    host_patterns = patterns('',
        host(r'app1', 'APP1.urls', name='APP1'),
        host(r'app2', 'APP2.urls', name='APP2'),
    )
    
    5.修改 settings.py 文件,在 ROOT_URLCONF 配置项之后增加 ROOT_HOSTCONF = '项目目录名.host'   #注意,不是app的名字
    
    6.修改 settings.py 文件,在ROOT_HOSTCONF 配置项之后增加 DEFAULT_HOST = 'app1'      #设置一个默认的域名,在没有匹配到所请求的域名时,默认返回这个。
    
    7.在每个app下创建自己的urls.py

    由于线上使用的Nginx+Uwsgi的环境,顺便贴一下Nginx和Uwsgi的配置

    Nginx的配置如下:

    a.domain.com配置

      server {
            listen       80;
            server_name  a.domain.com;
    location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; uwsgi_param UWSGI_SCRIPT web.wsgi; } location /static { alias /data/local/app/app1/static; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }

    b.domain.com配置

    server {
            listen       80;
            server_name  b.domain.com;
    
            #charset koi8-r;
    
            access_log  logs/app2.access.log  main;
            error_log  logs/app2.error.log  info;
    
            location / {
                include     uwsgi_params;
                uwsgi_pass  127.0.0.1:8000;
                uwsgi_param  UWSGI_SCRIPT  web.wsgi;
                uwsgi_read_timeout  20;
            }
    
            #location /static {
            #    alias /data/local/app/blog/web/WeChatAPI/static;
            #}
    }

     Uwsgi的配置如下:

    [uwsgi]
    
    socket = :8000
    chdir = /data/local/app/
    #module = web.wsgi:app1
    wsgi-file = web/wsgi.py
    master = true
    processes = 1
    pidfile = /tmp/web-master.pid
    daemonize = /var/log/uwsgi/app1.log

    参考:http://blog.csdn.net/sinat_21302587/article/details/74017312

    django-hsot github地址:https://github.com/jazzband/django-hosts

  • 相关阅读:
    委托和异步方法
    线程池_ThreadPool
    委托_deleget
    一步一步实现视频播放器client(二)
    mysql忘记password
    POJ 2456 Aggressive cows (二分 基础)
    Fragment小结
    Cocos2d-x粒子系统
    淘宝数据库OceanBase SQL编译器部分 源代码阅读--解析SQL语法树
    C与C++在形參的一点小差别
  • 原文地址:https://www.cnblogs.com/ahaii/p/8603489.html
Copyright © 2011-2022 走看看