Centos7 + uWSGI + Nginx 运行 Django 2
以 EOJ 为例,前期我已经部署在Centos 7 上好了 EOJ 运行环境,本文描述的是部署 Django 完成后用 Nginx 作为对外的服务框架。
uWSGI 和 Nginx 都是 C 语言编写的,并且都是异步的,对高并发性能友好。
uWSGI
WSGI是一种WEB服务器 网关接口 。 是一个Web服务器(如nginx)与应用服务器(如uWSGI)通信的一种规范(协议)。
uWSGI实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器。uWSGI代码完全用C编写,效率高、性能稳定。
Nginx
Nginx(“engine x”) 是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
安装
pip3 install uwsgi
# 测试功能是否正常
uwsgi --http 0.0.0.0:80 --file eoj3/wsgi.py --static-map /static=static
yum install nginx -y
配置
使用 Nginx 默认的配置文件
# cd you_app_location
ls -l /etc/nginx/uwsgi_params
uWSGI 配置
vim eoj.ini
写入一下内容
1 | [uwsgi] |
运行:
uwsgi --ini eoj3.ini --static-map /media=./media --static-map /static=./static
注:EOJ有两个静态资源文件夹分别是 media 和 static
nginx.conf
修改 Nginx 配置文件
vim /etc/nginx/nginx.conf
1 | server { |
总结
- 网上很多质料都是 Django V1.x 的,但是和 V2.x 还是有些区别(坑啊)。
- Nginx 运行后,访问 web 端可能会出现访问错误,一般是权限问题,centos7 yum 安装的 Nginx 启动默认用户和用户组都是nginx。
还没有解决的问题:
- 以非 root 权限运行 uWSGI,有些资源无法访问(修改了用户和所属组也无用)。