摘要
本文部分内容来源于网络,个人收集整理,请勿传播
Django框架运行依赖wsgi(本质提供socket服务端),众多模块实现了wsgi规范,而django框架中默认使用wsigiref模块来实现,他由于性能比较低,所以用于本地开发和测试,而线上部署时需要使用uwsgi来代替。
uwsgi
1 | # 需要先安装:yum install python-devel |
单文件使用
1 | def application(env, start_response): |
启动Web服务器:
1 | uwsgi --http :9001 --wsgi-file app.py |
PS: flask需要再加 –callable app
django程序使用uwsgi
将开发好的django程序拷贝到服务器目录【同示例一】,即:/data/oldboy ,执行命令启动:
1 | uwsgi --http :9005 --chdir /data/xxx/ --wsgi-file xxx/wsgi.py --master --processes 4 |
使用配置文件启动
创建配置文件 oldboy.ini
1 | [uwsgi] |
根据配置文件启动uwsgi
1 | uwsigi --ini xxx.ini |
PS: 如果有虚拟环境可以添加上虚拟环境路径配置: virtualenv = /env/xxx_venv
此时访问时,会出现找不到静态文件的错误。
想要uwsgi处理静态文件,需要先将django的静态文件收集到制定目录,然后再设置对应关系。
- 收集django静态文件
- 在django的配置文件中添加:STATIC_ROOT = os.path.join(BASE_DIR,”allstatic”)
- 执行 python3 manage.py collectstatic 命令,至此django项目所有相关静态文件都会收集到制定目录。
- 设置uwsgi静态文件对应关系
- uwsgi –http :9005 –chdir /data/xxx/ –wsgi-file xxx/wsgi.py –master –processes 4 –static-map /static=/data/xxx/allstatic
nginx
利用Nginx做反向代理、负载均衡以及处理静态文件。
1 | user root; |
确保nginx配置文件目录下有uwsgi_params文件(默认)
配置uwsgi
为了确保让所有请求均通过80端口来访问网站,将uwsgi的配置文件修改为:
1 | [uwsgi] |
启动uwsgi和nginx
1 | uwsgi --ini /data/oldboy/oldboy.ini & |
supervisor
1 |
|