• Nginx+uwsgi+Django部署


    Nginx+uwsgi+Django部署

    术语简介

    web框架

    • Web应用框架有助于减轻网页开发时共通性活动的工作负荷,例如许多框架提供数据库访问接口、标准样板以及会话管理等,可提升代码的可再用性。
    • Web应用框架(Web application framework)是一种开发框架,用来支持动态网站、网络应用程序及网络服务的开发。其类型有基于请求的和基于组件的两种框架

    web服务器

    • web服务器即用来接受客户端请求,建立连接,转发响应的程序,至于转发的内容是什么,交由web框架来处理,即处理这些业务逻辑。如查询数据库、生成实时信息等。
    • Nginx就是一个web服务器

    uWSGI和WSGI

    WSGI

    简介

    全称Python Web Server Gateway Interface,指定了web服务器和Python web应用或web框架之间的标准接口,以提高web应用在一系列web服务器间的移植性

    1. WSGI是一套接口标准协议/规范;
    2. 通信(作用)区间是Web服务器和Python Web应用程序之间;
    3. 目的是制定标准,以保证不同Web服务器可以和不同的Python程序之间相互通信

    处理流程

    1. 接受用户操作浏览器发送的请求
    2. 接受用户的请求转发至对应的web服务器
    3. web服务器将请求转交给web应用程序,web应用程序处理请求
    4. web应用将请求结果返回给web服务器,由web服务器返回用户响应结果
    5. 浏览器收到响应,向用户展示

    产生背景

    请求时Web服务器需要和web应用程序进行通信,但是web服务器有很多种啊,Python web应用开发框架也对应多种啊,所以WSGI应运而生,定义了一套通信标准。试想一下,如果不统一标准的话,就会存在Web框架和Web服务器数据无法匹配的情况,那么开发就会受到限制,这显然不合理的。

    uwsgi

    与WSGI一样是一种通信协议,是uWSGI服务器的独占协议,用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型的描述,与WSGI协议是两种东西,据说该协议是fcgi协议的10倍快。

    uWSGI

    1. 是一个web服务器,实现了WSGI协议、uwsgi协议、http协议等。
    2. WSGI协议主要包括server和application两部分:

    部署流程

    项目部署

    uWSGI

    安装

    pip install uwsgi
    

    启动文件

    [uwsgi]
    #使用nginx连接时使用
    socket=127.0.0.1:9999	# ip和端口
    
    #项目目录
    chdir=/root/projects/dayfresh
    #项目中wsgi.py文件的目录,相对于项目目录
    wsgi-file=dayfresh/wsgi.py
    # 进程数
    processes = 4
    # 线程数
    threads = 2
    # uwsgi服务器的角色
    master = True
    pidfile=/root/project/dayfresh/pidfile/uwsgi.pid	# uwsgi的pid生成文件
    daemonize=/root/project/dayfresh/daemonize/uwsgi.log  # 日志文件
    virtualenv=/root/project/.virtualenv/dailyfresh
    

    启动

    uwsgi --ini uwsgi.ini 	# 启动py
    
    
    (dailyfresh) [root@SR dayfresh]# ps -aux | grep uwsgi	# 查看uwsgi
    

    收集python静态文件

     python3.6 manage.py collectstatic 	# 收集django所需的静态文件
    

    Nginx

    server {
            listen       80;
            server_name  10.1.1.6;	# 监听地址
    
        
    
            location / {
              
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:9999;	# 与uwsgi中的地址端口一样
            }
            
            location /static {
           		 alias /var/www/html/dailyfresh/static/;	# 静态文件
            }
    }	
    (dailyfresh) [root@SR dayfresh]# nginx -t	# 查看配置是否有错误
    
    (dailyfresh) [root@SR dayfresh]# nginx -s reload	# 重启nginx服务
    
    

    配置uwsgi开机启动

    创建开机启动的python脚本

    import os
    
    def run_uwsgi(uwsgi_file):
        os.system('uwsgi --ini %s' % uwsgi_file)
    
    
    if __name__ == '__main__':
        uwsgi_file = '/root/project/dayfresh/uwsgi_path/uwsgi.ini'	# uwsgi所在文件路径
        run_uwsgi(uwsgi_file)
    

    创建shell脚本

    #!/bin/bash
    python3.6 /root/project/dayfresh/uwsgi_path/run_uwsgi.py 	# 运行上述python脚本
    

    开机启动

    (dailyfresh) [root@SR dayfresh]# vim /etc/rc.d/rc.local 
    			 bash /root/project/dayfresh/uwsgi_path/run_uwsgi.sh	# 将上述shell脚本加
    (dailyfresh) [root@SR dayfresh]# chmod +x /etc/rc.d/rc.local 	# 添加执行权限
    
  • 相关阅读:
    mybatis概述
    Spring的配置分别是xml和java style
    JavaScript对象数据过滤、修改
    Spring框架
    设计模式-工厂方法模式(Fatory Patterm)
    简单的数据结构
    java链式操作
    centos7 php开发环境安装-composer
    centos7 php开发环境安装-php
    centos7 php开发环境安装-Apache
  • 原文地址:https://www.cnblogs.com/SR-Program/p/14140989.html
Copyright © 2020-2023  润新知