码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx+uWSGI启动Django

时间:2018-05-24 11:57:21      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:并发   img   work   bsp   区别   pass   requests   default   通信协议   

在之前的几篇博客中对Django的功能做了初步总结,这里链接贴一下:

Django的安装和启动

Django之--网页展示Hello World!

Django之--通过MVC架构的html模板展示Hello World!

Django之--MVC的Model

Django之--POST方法处理表单请求

Django之--模板加载图片

到这里基本的测试暂时告一段落,但是在实际开发中是不可能用python manage.py runserver这种方式启动web server的,因此接下来测试如何使用uwsgi+nginx的方式启动Django。

一、安装uWSGI和Nginx

pip3.6 install uwsgi
yum -y install nginx

WSGI / uwsgi / uWSGI 这三个概念的区别:(引用自:http://www.cnblogs.com/alex3714/p/6538374.html) 

WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。 
uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。 
而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。 
uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。

二、为uWSGI编写配置文件

vi /etc/uwsgi.ini

[uwsgi]
chdir=/root/Django/mysite/  --即网站根目录。
module=mysite.wsgi:application  --标识app位置。
static-map=/static=/root/Django/mysite/static  --表示模板引用的静态文件的目录,使用图片时必须设置。
socket=192.168.1.193:8000  --用于接收nginx请求的socket,可以是文件,而且建议是文件,这里懒的改了。
master = true    
vhost = true      
no-site = true     
workers = 2         
reload-mercy = 10     
vacuum = true        
max-requests = 1000   
limit-as = 512
buffer-size = 30000
pidfile = /var/run/uwsgi.pid
daemonize = /tmp/uwsgi.log  --uWSGI日志,安装uwsgi调试时有用。

三、修改Nginx配置文件

upstream部分一般用于配置负载均衡,这里就不写了。

server {
    listen       80 default_server;  --表示监听80端口,我们最后也通过访问此端口来访问网站的。
    listen       [::]:80 default_server;
    server_name  192.168.1.193;  #定义server访问名,表示只处理此访问名的请求,如果不设置会默认当前第一个server域,因此不设置也行。
    access_log /etc/nginx/access.log main; #nginx日志
    root         /usr/share/nginx/html;
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
    location / { #默认请求访问
	include	/etc/nginx/uwsgi_params;
	uwsgi_pass  192.168.1.193:8000; #请求自动转发给192.168.1.193:8000的uWSGI socket,与上面uWSGI的socket参数要一致。
    index  index.html index.htm;
	client_max_body_size 35m;
    }
    error_page 404 /404.html;
        location = /40x.html {
    }
    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

 

四、运行uWSGI和nginx

启动uwsgi和nginx:

uwsgi --ini=/etc/uwsgi.ini
service nginx start

此时你就可以通过你在urls.py定义的网址来访问页面了。但是需要注意的nginx上边我监听的是80端口,因此你只需要访问80端口就好,他会把请求全部转发到8000端口的uwsgi处理。

显示的页面如下图所示(默认的80端口):

技术分享图片

 

最后:

必须要说的是不使用nginx只用uwsgi也可以实现以上的功能,但是此时你需要为uwsgi.ini配置http参数,socket参数可以省略,如果只使用uwsgi那么你可以通过http参数定义的端口访问以上页面。使用nginx的最大好处之一是实现对后端uwsgi的负载均衡,这样可以提升并发量,此外nginx对静态请求的处理能力要强过uwsgi,因此如果静态请求较多,那么可以将这部分内容用nginx处理。

Nginx+uWSGI启动Django

标签:并发   img   work   bsp   区别   pass   requests   default   通信协议   

原文地址:https://www.cnblogs.com/leohahah/p/9081541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!