six_部署图书馆系统_uWSGI
1、为什么使用uWSGI和nginx
首先nginx 是对外的服务接口,外部浏览器通过url访问nginx, nginx接收到浏览器发送过来的http请求,将包进行解析,分析url,如果是静态文件请求就直接访问用户给nginx配置的静态文件目录,直接返回用户请求的静态文件,如果不是静态文件,而是一个动态的请求,那么nginx就将请求转发给uwsgi, uwsgi接收到请求之后将包进行处理,处理成wsgi可以接受的格式,并发给wsgi, wsgi 根据请求调用应用程序的某个文件的某个函数,最后处理完将返回值再次交给uwsgi,uwsgi将返回值进行打包,打包成uwsgi能够接收的格式,uwsgi接收wsgi 发送的请求,并转发给nginx, nginx最终将返回值返回给浏览器。 要知道第一级的nginx并不是必须的,uwsgi完全可以完成整个的和浏览器交互的流程,但是要考虑到某些情况 (1) 安全问题,程序不能直接被浏览器访问到,而是通过nginx,nginx只开放某个接口,uwsgi本身是内网接口,这样运维人员在nginx上加上安全 性的限制,可以达到保护程序的作用。 (2)负载均衡问题,一个uwsgi很可能不够用,即使开了多个work也是不行,毕竟一台机器的cpu和内存都是有限的,有了nginx做代理,一个nginx可 以代理多台uwsgi完成uwsgi的负载均衡。 (3)静态文件问题,用django或是uwsgi这种东西来负责静态文件的处理是很浪费的行为,而且他们本身对文件的处理也不如nginx好,所以整个静态文件的处理都直接由nginx完成,静态文件的访问完全不去经过uwsgi以及其后面的东西。

systemctl start mariadb # 启动数据库 workon qishi3_venv # 进入虚拟环境B cd /opt/nginx112/sbin/ # 去到这里开启nginx ./nginx supervisord -c /etc/supervisord.conf # 启动 supervisorctl start all # 启动super,uwgis已经配置到super里自动启动,所以不需要再单独启动 supervisorctl status # 查看状况



[uwsgi] # Django-related settings # the base directory (full path) # 写上项目的绝对路径 chdir = /opt/book_manage # Django's wsgi file # 填写找到django的wsgi文件,填写相对路径,以chdir参数为相对路径 module = book_manage.wsgi # the virtualenv (full path) # 填写虚拟环境的绝对路径 home = /root/Envs/book_manage_env/ # process-related settings # master #启动uwsgi主进程 master = true # maximum number of worker processes processes = 1 # the socket (use the full path to be safe #如果你使用了nginx,做反向代理,必须填写socket链接,而不是http参数 socket = 0.0.0.0:8000 #如果你不用nginx,直接使用uwsgi,运行一个http服务端,就用这个http参数 http = 0.0.0.0:8000 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true
location / { # nginx自带ngx_http_uwsgi_module模块,起到nginx和uwsgi交互作用 # 通过uwsgi_pass设置服务器地址和协议,将动态请求转发给uwsgi处理 include /opt/nginx112/conf/uwsgi_params; uwsgi_pass 0.0.0.0:8000; root html; index index.html index.htm; }
location /static { alias /opt/static; }


浙公网安备 33010602011771号