zoukankan      html  css  js  c++  java
  • Django+Nginx+uWSGI部署

    一.介绍

    Django的部署有多种方式,采用Nginx+uWSGI的方式是最常见的一种方式。在这种方式中,将Nginx作为服务器前端,接收Web的所有请求,统一管理请求。Nginx自己处理所有静态请求,所有非静态请求通过uWSGI传递给Django,由Django来进行处理,从而完成一次Web请求。

    Django工程创建:Django Web框架入门

    二.安装配置

    环境:Python(3.5.2)、Django(1.11.6)

    1.安装pip

    root@787c084a44e4:~# apt-get install -y python3-pip 

    2.安装uWSGI

    root@787c084a44e4:~# python3 -m pip install uWSGI 

    3.安装Django

    root@787c084a44e4:~# python3 -m pip install Django 

    4.安装Nginx

    root@787c084a44e4:~# apt-get install -y nginx 

    5.通过文件配置uwsgi,新建文件/root/web/uwsgi.ini

    [uwsgi]
    # 监听IP和端口
    socket = 127.0.0.1:9090
    # 项目主目录
    chdir = /root/web/Django
    # uwsgi文件路径
    module = Django.wsgi:application
    # 允许主进程存在
    master = True
    # 开启的进程数
    workers = 1
    # 服务器退出时自动清除环境
    vacuum = True
    # 设置工作进程请求上限
    max-requests = 1000
    # 记录主进程的pid
    pidfile = /var/uwsgi.pid
    # 使进程在后台运行
    daemonize = /var/uwsgi.log

    6.配置nginx虚拟主机,新建文件/etc/nginx/sites-enabled/django.conf

    # nginx需要连接的后端代理
    upstream django {
        server 127.0.0.1:9090;
    }
    
    # 虚拟主机配置
    server {
        # 监听端口
        listen 8080;
        # 域名
        server_name 127.0.0.1;
        # 编码
        charset utf-8;
        # 静态文件路径
        location /static {
            alias /root/web/Django/static;
        }
        # 将动态请求转发到uwsgi运行的django程序
        location / {
            uwsgi_pass django;
            include /etc/nginx/uwsgi_params;
        }
    }

    7.修改nginx默认运行用户,修改/etc/nginx/nginx.conf文件,user www-data修改为user root

    三.验证部署

    运行工程

    root@787c084a44e4:~/web# uwsgi --ini uwsgi.ini & nginx

    访问地址http://127.0.0.1:8080/list,数据和页面css样式正常

    四.异常情况

    1.出现DisabllowedHost

     修改Django/Django/settings.py文件

     ALLOWED_HOSTS = ["*"] 

    2.出现静态文件403异常

    Nginx使用www-data用户运行,无web目录读取权限,修改/etc/nginx/nginx.conf文件,user www-data修改为user root


    作者:faramita2016
    出处:http://www.cnblogs.com/faramita2016/
    本文采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    JavaScript 以POST方式打开新页面
    C# 实现守护进程
    SQL Server 之 使用RowCount遍历表数据
    SQL Server 之 存储过程调用C#编写的dll文件
    C# 多线程学习整理
    java 学习的有用链接
    git 操作命令
    关于各种Map的那些事
    JAVA 反射机制详解
    深入理解java:注解(Anotation)自定义注解
  • 原文地址:https://www.cnblogs.com/faramita2016/p/7736313.html
Copyright © 2011-2022 走看看