python django nginx简要说明和配置

python + django 是个应用程序, 并没有http或websocket的能力

这里有两种方法,简要说明下

1、django提供了daphne使用channel提供http和websocket

2、django+nginx(配置uwsgi.ini和uwsgi_params 使用uwsgi和nginx提供http服务)

下面是我在项目是使用时的一些记录

流程: 1. 首先客户端请求服务资源, 2. nginx作为直接对外的服务接口,接收到客户端发送过来的http请求,会解包、分析, 3. 如果是静态文件请求就根据nginx配置的静态文件目录,返回请求的资源, 4. 如果是动态的请求,nginx就通过配置文件,将请求传递给uWSGI;uWSGI 将接收到的包进行处理,并转发给wsgi, 5. wsgi根据请求调用django工程的某个文件或函数,处理完后django将返回值交给wsgi, 6. wsgi将返回值进行打包,转发给uWSGI, 7. uWSGI接收后转发给nginx,nginx最终将返回值返回给客户端(如浏览器)。 *注:不同的组件之间传递信息涉及到数据格式和协议的转换*作用: 1. 第一级的nginx并不是必须的,uwsgi完全可以完成整个的和浏览器交互的流程; 2. 在nginx上加上安全性或其他的限制,可以达到保护程序的作用; 3. uWSGI本身是内网接口,开启多个work和processes可能也不够用,而nginx可以代理多台uWSGI完成uWSGI的负载均衡; 4. django在debug=False下对静态文件的处理能力不是很好,而用nginx来处理更加高效。
直接使用uwsgi启动: (发现static静态文件没生效,需要配置http://uwsgi-docs.readthedocs.io/en/latest/StaticFiles.html)uwsgi --http :8056 --wsgi-file dirserver/wsgi.py #自己开http服务uwsgi --socket :8056 --wsgi-file dirserver/wsgi.py #使用nginx配合使用时或修改uwsgi.ini配置表uwsgi --ini uwsgi.ini启动

nginx配置:/etc/nginx/sites-enabled/default upstream django { server unix:///home/lee/doomhotel/dev/dirserver/dirserver.sock;}server { listen 8099 default_server; listen [::]:8099 default_server; location /static { alias /home/lee/doomhotel/dev/dirserver/static; }
location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; include /home/lee/doomhotel/dev/dirserver/uwsgi_params; uwsgi_pass django; uwsgi_read_timeout 2; }
文章来源: python django nginx简要说明和配置

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:python django nginx简要说明和配置