os: ubuntu 18.04
django: 2.0.4
python:3.6
uwsgi: 2.0.17
nginx: 1.14.0
django 是后端框架, 主要进行的是逻辑处理 , 其自带 WSGI服务器(位置:project_name/wsgi.py),可用于调试,但高并发情况无法达到要求。
uWSGI:也可以用作服务器,比wsgi快很多,但是在实际环境中,主要和nginx一起使用,这时作为django 与 nginx 的中间件。
nginx:高性能反向代理服务器,对高并发支持得很好,可以直接响应转发静态文件,不用经过后端逻辑处理,所谓反向代理就是浏览器发送的http 请求强制首先被nginx进行代理,然后由nginx决定是否发给后台,可以均衡负载。
安装:pip install django
启动:django 项目必须可以启动,python manage.py runserver 正常启动后没有问题
安装:pip install uwsgi
启动命令:uwsgi --http 127.0.0.1:8080 --file 项目名称/wsgi.py
(http 是django 的url,file是django目录下的wsgi.py文件位置)
上面这个命令比较简单,但是实际配置的时候经常由很多参数要写,导致需要输入一个很长的命令。
所以我们编写一个配置文件来代替,每次启动只需要使用配置文件启动。
配置文件:(可以放在任何位置 ,文件名随意,后缀名.ini)
[uwsgi]
socket = 127.0.0.1:8080 //与nginx通信的socket(一定要和nginx配置保持一致!!!)
chdir = /home/lihansen/pyproject/django/detection_server //django 项目的根目录
module = detection_server.wsgi //django项目下的wsgi.py 模块,(这里可以写绝对路径,也可以用python import 的方式)
processes = 2
threads = 4
master = true
buffer-size = 60000
vacuum = true
(复制后请把注释删除,防止出现不必要的错误)
启动命令:uwsgi --ini 文件名.ini
安装:sudo apt install nginx
配置文件:默认的配置文件是/etc/nginx/nginx.conf,我们的网站配置文件是放在/etc/nginx/site-enabled/*.conf
所以我们在这个目录下编写一个文件
server {
listen 8888; #网站访问的监听端口
server_name localhost; #网站的url
charset utf-8;
client_max_body_size 75M;
location /static {
alias /home/lihansen/pyproject/django/detection_server/static; #静态文件地址
}
location / { #uwsgi配置
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080 ; #与uwsgi通信的地址
uwsgi_param UWSGI_CHDIR /home/lihansen/pyproject/django/detecion_server; #django 项目参考地址
uwsgi_param UWSGI_SCRIPT detection_server.wsgi; # wsgi模块导入
}
}
语法可参考:http://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/Vars.html
创建配置文件后保存
我们可以用 nginx -t来测试配置文件
完成配置后,我们输入 service nginx restart 来重新启动
现在配置已经完成,打开http://127.0.0.1:8888 就可以显示出django 项目的主页了!
(这时候的uWSGI服务器一定是开启状态)
关闭nginx:
nginx -s quit #网上的关闭命令通常不好用,网站还能上去,我使用的是杀死master进程的方式
ps -ef | grep nginx #查看nginx所有的进程,查看master 的进程pid
kill -quit pid #杀死master进程的pid,nginx被完全关闭,再次输入网站url ,发现网站已经被关闭
nginx常用命令:
终端输入 nginx -h 查看常用命令,like this:
root@648700565:/etc/nginx# nginx -h
nginx version: nginx/1.14.0 (Ubuntu)
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:nginx -c filepath #更改配置文件的路径
nginx -t #测试
service nginx start #开启
参考资料:
http://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/index.html