django+uwsgi+nginx 配置并启动

运行环境

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决定是否发给后台,可以均衡负载。


操作

django:

安装:pip install django

启动:django 项目必须可以启动,python  manage.py  runserver  正常启动后没有问题


uWSGI:

安装: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

nginx:

安装: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:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/share/nginx/)
  -c filename   : set configuration file (default: /etc/nginx/nginx.conf)
  -g directives : set global directives out of configuration file

nginx -c  filepath  #更改配置文件的路径

nginx -t  #测试

service nginx start #开启



参考资料:

http://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/index.html


你可能感兴趣的:(nginx)