• 2019年3月29日 16:31

    三者关系:
    uwsgi 所扮演的的角色是后端 http 服务器,nginx 扮演的角色是前端 http 服务器,django项目 是客户所真正要访问到的提供数据方。
    用户从网页浏览器中发出请求,nginx 服务器收到请求后,会通过它的 uwsgi 模块将用户的请求转发给 uwsgi 服务器,uwsgi 服务器通过django处理完毕后将结果返回给 nginx,浏览器将最终的结果展现给用户。

    1.png

    1.png

    PNG, 8.1 KB, 被 Jerry上传于2019年3月29日

  • 2019年3月29日 16:50

    1、最开始的django项目我们一般这样运行:

    python3 ./manage.py runserver 127.0.0.1:8080
    

    如果运行没问题 访问都OK说明项目是OK的,有错的话 根据 提示改错误。


    2、部署uWSGI服务器

    安装:

    pip3 install uwsgi
    

    编辑配置文件,相关参数 看这个 uwsgi 配置使用

    开启服务:

    uwsgi --ini uwsgi.ini
    

    3、部署nginx服务器
    相关命令:

    apt install nginx   //安装
    nginx -v            // 查看版本
    nginx -c            //设置默认的配置文件
    nginx -t            //检查nginx配置是否语法错误
    nginx -s reload       //重新加载
    nginx -s reopen      //重启
    nginx -s stop           //关闭
    service nginx start    //启动服务
    service nginx stop    // 关闭服务
    service nginx restart  //重启服务
    
  • 2019年3月29日 16:56

    最终一个nginx配置文件大体结构如下:

    server {
            listen 443 ssl;   //https端口为443
            server_name  example.com;
    
            ssl on; #开启ssl
            ssl_certificate      cert/*.pem;     #pem 位置
            ssl_certificate_key  cert/*.key;     #key 位置
            ssl_session_timeout  5m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    
            #密码加密方式
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
            ssl_prefer_server_ciphers  on;     #依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
    
            #静态文件处理
            location /static {
                    alias /home/www/work/project/pro/static;
    
            #媒体文件处理
            location /media {
                    alias /home/www/work/project/pro/media;
    
            其他文件转wsgi处理
            location / {
                uwsgi_pass  x.x.x.x:xxxx;              #这个是uwsgi.ini中配置的 socket
                include uwsgi_params;
            }
    }
    
    #配置80端口重定向到https 443
    server {
           listen 80;
           server_name example.com;
           rewrite ^(.*)$  https://$host$1 permanent;
    }