zoukankan      html  css  js  c++  java
  • nginx 基于uwsgi部署Django

    1.安装nginx

    yum install -y nginx(需要epel源)
    

    2.安装环境

    可以考虑使用虚拟化环境,本处不再使用
    

    3.安装uwsgi

    yum groupinstall "Development tools"
    yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel python-devel
    pip install uwsgi
    

    4.安装django

    pip install django==1.11
    

    5.创建django项目

    django-admin startproject mysite
    

    6.创建app

    python manage.py startapp app01
    

    7.修改mysite/settings.py

    ALLOWED_HOSTS = ['*']
    

    8.修改mysite/urls.py

    from app01 import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^hello_django/', views.hello),
    ]
    

    9.修改app01/views.py

    from django.shortcuts import render,HttpResponse
    
    # Create your views here.
    def hello(request):
        print('request is :',request)
        return HttpResponse('django is ok ')
    

    10.启动程序

    uwsgi --http :8000 --module mysite.wsgi
    

    11.uwsgi配置文件

    uwsgi支持ini、xml等多种配置方式,本文以 ini 为例, 在/etc/目录下新建uwsgi_nginx.ini,添加如下配置:
    
    [uwsgi]
    http = 0.0.0.0:8000
    #the local unix socket file than commnuincate to Nginx
    socket = /data/mysite/mysit.socket
    # the base directory (full path)
    chdir = /data/mysite
    # Django's wsgi file
    wsgi-file = mysite/wsgi.py
    # maximum number of worker processes
    processes = 4
    #thread numbers startched in each worker process
    threads = 2
    # clear environment on exit
    vacuum          = true
    daemonize = /data/mysite/uwsgi.log
    py-autoreload=1
    

    11.准备配置文件

    uwsgi_param  QUERY_STRING       $query_string;
    uwsgi_param  REQUEST_METHOD     $request_method;
    uwsgi_param  CONTENT_TYPE       $content_type;
    uwsgi_param  CONTENT_LENGTH     $content_length;
    
    uwsgi_param  REQUEST_URI        $request_uri;
    uwsgi_param  PATH_INFO          $document_uri;
    uwsgi_param  DOCUMENT_ROOT      $document_root;
    uwsgi_param  SERVER_PROTOCOL    $server_protocol;
    uwsgi_param  REQUEST_SCHEME     $scheme;
    uwsgi_param  HTTPS              $https if_not_empty;
    
    uwsgi_param  REMOTE_ADDR        $remote_addr;
    uwsgi_param  REMOTE_PORT        $remote_port;
    uwsgi_param  SERVER_PORT        $server_port;
    uwsgi_param  SERVER_NAME        $server_name;
    

    12.修改配置文件权限

    chown nginx.root uwsgi_params
    

    13.修改nginx配置文件

    location / {
            include  /data/mysite/conf/uwsgi_params;
            proxy_pass http://127.0.0.1:8000;
                root   html;
                index  index.html index.htm;
            }
            }
    location /static{
         alias /data/mysite/static;   
     }
         #nginx处理媒体资源
    location /media{
         alias /data/mysite/media;  
     }
    

    ps: nginx 连接uwsgi一共有三种方式

    方式一: 
    uwsgi.ini 里面指定为http = 127.0.0.1:8000
    nginx的配置文件里面需要写
    proxy_pass http://127.0.0.1:8000;
    
    方式二:
    uwsgi.ini里面指定为socket = 127.0.0.1:8000
    nginx的配置文件需要写 
    include /etc/nginx/uwsgi.conf;
    uwsgi_pass 127.0.0.0:8000;
    
    方式三:
    uwsgi.ini里面指定为socket = /data/mysite/mysite.socket
    nginx的配置文件需要写 
    include /etc/nginx/uwsgi.conf;
    uwsgi_pass unix:/data/mysite/mysite.socket;
    

    14.执行命令迁移nginx静态文件

    STATIC_ROOT = os.path.join(BASE_DIR, "static/")
    python manage.py collectstatic
    

    15.查看效果

  • 相关阅读:
    mysql source 乱码
    php5.6.11 openssl安装
    python threading模块的Lock和RLock区别
    python多线程一些知识点梳理
    多核处理器中进程和线程是如何一起工作的?
    IO是否会一直占用CPU?(转)
    Python TypeError: __init__() got multiple values for argument 'master'(转)
    Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解(转)
    浏览器环境下JavaScript脚本加载与执行探析之代码执行顺序(转)
    为什么有的网页右击没有出现审查元素
  • 原文地址:https://www.cnblogs.com/russellyoung/p/nginx-ji-yuuwsgi-bu-shuDjango.html
Copyright © 2011-2022 走看看