Django uWSGI 启动

uWSGI是一个Python Web服务器,它实现了WSGI协议、uwsgi、http等协议,常在部署Django或Flask开发的Python Web项目时使用,作为连接Nginx与应用程序之间的桥梁

为什么需要uWSGI?

在生产环境中部署Python Web项目时,uWSGI负责处理Nginx转发的动态请求,并与我们的Python应用程序沟通,同时将应用程序返回的响应数据传递给Nginx。

疑问

Nginx本身就是Web服务器,我们为什么还需要uWSGI这个Web服务器呢?

Django不是自带runserver服务器?Flask不是自带Werkzeug吗? 答案是Nginx处理静态文件非常优秀,却不能直接与我们的Python Web应用程序进行交互。Django和Flask本身是Web框架,并不是Web服务器,它们自带的runserver和Werkzeug也仅仅用于开发测试环境,生产环境中处理并发的能力太弱。

为了解决Web 服务器与应用程序之间的交互问题,就出现了Web 服务器与应用程序之间交互的规范。最早出现的是CGI,后来又出现了改进 CGI 性能的FasgCGI,Java 专用的 Servlet 规范。在Python领域,最知名的就是WSGI规范了

现在你清楚uWSGI, WSGI和uwsgi的区别了吗?

  • uWSGI是Python Web服务器,实现了WSGI通信规范和uwsgi协议;
  • WSGI全名Web Server Gateway Interface,是一个Web服务器(如uWSGI服务器)与web应用(如用Django或Flask框架写的程序)通信的一种规范;
  • uwsgi是WSGI通信规范中的一种自有协议。

uWSGI的安装与启动

在指定的环境中也就是虚拟环境,pip install uwsgi 下载

之后可以写个测试查看是否安装成功:创建test.py文件,插入下面文件,江湖规矩 返回hello world

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]

然后使用如下命令启动uWSGI Web服务器, 端口8080.

uwsgi --http :8080 --wsgi-file test.py

网页进行ip:8080可以访问,说明ok

django项目启动

# 假设当前位置/home/user/data/
# 创建django项目 
django-admin startproject projectName
cd projectName

# 这时候使用下面指令就可以启动了 
uwsgi --http 0.0.0.0:8000 --chdir /home/user/data/projectName/ --wsgi-file projectName/wsgi.py

# 若是显示Internal Server Error 就是说明文件位置不对了

uwsgi配置文件启动

touch dj.ini
vim dj.ini
# 插入
[uwsgi]
; 绝对路径项目的目录
chdir = /home/user/data/projectName/

; 监听的端口,当没有nginx时候使用这个
http = 0.0.0.0:8000

; 代理静态资源:路径映射,没nginx时候要配置的
static-map = /static= static/

; 主应用中的wsgi文件,django框架创建时候会自动生成
wsgi-file = projectName/wsgi.py

; 启动一个master进程,来管理其余的子进程
master=True

;开四个进程
processes = 4

;开两个线程
threads = 2

; 设置每个工作进程处理请求的上限,达到上限时,将回收(重启)该进程。可以预防内存泄漏
max-requests=5000

; 服务停止时自动移除unix Socket和pid文件
vacuum=true

; django的运行日志保存的文件路径,配置了日志后,启动就是后台启动了
daemonize=./log/uwsgi.log

配置好了之后 uwsgi dj.ini 启动

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值