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 启动
Original: https://blog.csdn.net/SetpBy/article/details/127005754
Author: Step By
Title: Django uWSGI 启动
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/745998/
转载文章受原作者版权保护。转载请注明原作者出处!