Django在Ubuntu上的部署(nginx+Uwsgi)
时间:2020-05-29
本文章向大家介绍Django在Ubuntu上的部署(nginx+Uwsgi),主要包括Django在Ubuntu上的部署(nginx+Uwsgi)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、用户请求到Django应用的流程图
2、uWSGI、uwsgi、WSGI之间的关系
WSGI:是一种协议,起到规范参数的作用,WSGI沟通的双方是wsgi server (比如uWSGI) 要和 wsgi application(比如django )
uWSGI:是一个服务器软件,实现wsgi协议规范的服务器我们叫做wsgi服务器,也就是uWSGI服务器,作用是把HTTP协议转化成WSGI协议,让Python可以直接使用。也就是说如果没有Nginx服务器,单独的uWSGI也是可以使用的,但是加了Nginx能实现负载均衡,和高并发。uWSGI使用的是多进程来实现异步请求的,一主进程加多子进程的模式。
nginx:也是一个服务器软件,具备优秀的静态内容处理能力,然后将动态内容转发给uWSGI服务器,这样可以达到很好的客户端响应。支持的并发量更高,方便管理多进程,发挥多核的优势,提升性能。这时候nginx和uWSGI之间的沟通就要用到uwsgi协议。
3、uWSGI的安装和使用
pip install uwsgi 或 pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz
uwsgi --http :8000 --wsgi-file test.py #启动单独的文件 uwsgi --http :8000 --module projectapp(app名称).wsgi #启动django
#/home/zbwu103/hellodjang/hellodjango-uwsgi.ini [uwsgi] #对外开放的端口 http = :9000 #跟Nginx通信的端口 socket = 127.0.0.1:8001 # 项目的路径 chdir = /home/zbwu103/hellodjango # Django WSGI文件存储的路径 wsgi-file = blogproject/wsgi.py # 最大的进程数 processes = 4 #每个进程使用的线程数 threads = 2 #监控状态的端口 stats = 127.0.0.1:9191 # 退出清除环境变量 vacuum = true ####uwsgi hellodjang-uwsgi.ini 命令启动uWSGI
#安装 pip install uwsgitop #使用 uwsgitop :9191
4、Nginx的安装和使用
sudo apt-get install nginx sudo /etc/init.d/nginx start
运行django的话需要在/etc/nginx/sites-enabled中新建一个nginx.ini文件,并且把/etc/nginx/里面的uwsgi_params复制到项目里面去
# hellodjango_nginx.conf upstream django { # 和uWSGI通信的端口,和uWSGI配置一样 server 127.0.0.1:8001; } server { #对外的端口 listen 8000; # the domain name it will serve for server_name .example.com; # substitute your machine's IP address or FQDN charset utf-8; # max upload size client_max_body_size 75M; # adjust to taste # Django media location /media { alias /path/to/your/mysite/media; # your Django project's media files - amend as required } location /static { alias /home/zbwu103/hellodjango/static; # 收集的静态文件 } # Finally, send all non-media requests to the Django server. location / { uwsgi_pass django; include /home/zbwu1o3/hellodjango/uwsgi_params; #复制的uwsgi_params文件路径 } }
nginx -t 查看配置是否出错 ps -ef |grep nginx 查看服务是否启动 cat /val/log/nginx/error.log 查看错误日志 cat /val/log/nginx/access.log 查看接入日志 /etc/init.d/nginx start 开启服务
原文地址:https://www.cnblogs.com/wuzhibinsuib/p/12986500.html
- SQL中利用DMV进行数据库性能分析
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建
- 独家!万达网科大裁员后将转型AI 朱战备或接班曲德君
- Git分支管理的策略梳理
- 数据场景分析 线上线下商家到底谁能干过谁?
- 张钦坤:云计算、开放平台与服务商版权责任
- biztalk 2010 dev版安装小记
- 微信小程序如何获取组件实际高度
- flex4/flash builder中动态加载Module并与之交互的正确方式
- Google发布会看图的人工智能,让它来评评你的照片拍得好不好
- Git日常操作命令梳理
- Git忽略规则.gitignore梳理
- 深入浅出事件流处理NEsper(二)
- 微信推出“微信使用小助手”,中老年人也能轻松玩转微信
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- AkShare-中国宏观-存款准备金率
- AkShare-中国宏观-消费者信心指数
- AkShare-期货数据-COMEX库存数据
- ESP8266和ESP32配置(需使用ROS1和ROS2)
- SpringBoot+Gradle+ MyBatisPlus3.x搭建企业级的后台分离框架
- frp 内网穿透远程桌面(Windows 10)配置
- 你来讲讲AQS是什么吧?都是怎么用的?
- Angular单元测试里pipe的mock设计
- 亿级数据判断 bitmap-布隆过滤器
- centOS8 安装MySQL8(亲测)
- 聊一聊微信小程序包内容
- 全面分析 MySQL并发控制
- Flink History Server
- 几种定时任务(Timer、TimerTask、ScheduledFuture)的退出—结合真实案例【JAVA并发】
- gitlab内存消耗大,频繁出现502错误的解决办法