基于Django的Nginx+uwsgi的服务器前置环境部署

Posted 梨花岛散人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Django的Nginx+uwsgi的服务器前置环境部署相关的知识,希望对你有一定的参考价值。

   


 在配置环境和调试设置之前我一向认为


配置的事,能叫问题吗?


直到我动手开始操作


才发现现实是


呵呵


:)







     闲话少说,开始今天的课题讨论——nginx


    Nginx 是一款面向性能设计的 HTTP 服务器,整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活。在 Linux 操作系统下,nginx 使用 epoll 事件模型,在 Linux 操作系统下效率相当高。

    Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式。在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求,因为nginx把所有静态请求自己来处理(这是NGINX的强项)。    

    然后,NGINX将所有非静态请求通过uwsgi传递给Django,由Django来进行处理,从而完成一次WEB请求。

    可见,uwsgi的作用就类似一个桥接器。起到桥梁的作用。

    Linux的强项是用来做服务器,所以,下面的整个部署过程我们选择在Ubuntu下完成。




下面我们将进行 nginx+uwsgi 的服务器部署

(我默认你已安装,如果没有安装,请查看文档)
第一步,首先我们通过 uwsgi 进行链接测试
01 方法:
在一个项目根目录下 创建一个py文件用来在页面返回我们指定的信息
001-demo_test.py中写入:
       
def application (env ,start_response):
start_response('200 OK',[('Content-Type' ,'text / html' )])
return  [ b"Hello World" ]
002-在终端中运行代码:
uwsgi --http :9090 --wsgi-filefoobar.py --master --processes 4
--threads 2 --stats 127.0.0.1:9191
       
# 注1: http:后的端口号是 我们返回最终信息页面的端口号
# 注2: 127.0.0.1:后 是返回JSON 文件信息页面的端口号
# 注3: -foobar.py-写我们的py文件名
          
在页面中输入地址127.0.0.1:9090 ,即可看到py文件中设定的返回信息了!    
02 方法:
在一个项目根目录下 创建一个ini文件用来在页面返回与我们的项目中指定的 视图逻辑
001-demo_test.ini中写入:
       
[uwsgi]
http=:8100
# 协议端口
chdir = /home/zhaojiu/demo
# 根目录路径
wsgi-file = /home/zhaojiu/demo/demo/wsgi.py
# wsgi 的目录路径
processes = 4
threads = 2
stats =127.0.0.1:8200
002终端运行代码:
uwsgi --ini demo_test.ini
注意!必须在项目的根目录中,运行终端输出以上代码才符合逻辑

    


第二步,运行nginx服务器
01.安装完成后,我们先寻找nginx路径:      
$ cd /etc/nginx/
$ ls
# 找到 sites-enabled
cd sites-enabled/
# 新建一个 conf文件与我们的项目关联
sudo vim demo.conf
 02-vim 编译模式输入代码:
1 upstream backend{
2     server 127.0.0.1:8100;
3 }
4 server {
5     listen         8099;
6     server_name    localhost www.aijiajia.com
7     charset UTF-8;
8     access_log     /home/demo/myweb_access.log;
9     error_log       /home/demo/myweb_error.log;
10     client_max_body_size  75M;
11
12     location / {
13         include uwsgi_params;
14         uwsgi_pass localhost:8100;
15         uwsgi_read_timeout 3;
16     }
17
18     location /static {
19         expires 30d;
20         autoindex on;
21         add_header Cache-Control private;
22         alias /home/zhaojiu/demo/;
23     }
24
25 }
:wq 保存并退出
       
03-在确保 uwsgi 02方法运行的情况下,运行nginx服务器
终端输入代码启动:
sudo nginx -c /etc/nginx/nginx.conf
在浏览器中输入我们的IP:
http://10.0.167.186:8100/
得到我们的视图逻辑!
成功!

终端输入代码启动:

sudo nginx -s stop
# 停止
。。。




    

在(二)中我们将继续讨论

——负载均衡和服务器部署相关的知识

在我们的博客完成后我会将源码与大家分享

   

                                                                                        — —感谢有你

                                                                                        刘某.2017-9-15

以上是关于基于Django的Nginx+uwsgi的服务器前置环境部署的主要内容,如果未能解决你的问题,请参考以下文章

跨过Nginx上基于uWSGI部署Django项目的坑

跨过Nginx上基于uWSGI部署Django项目的坑

nginx+uWSGI+django

nginx+uwsgi+Django(基于CentOS)

基于Django的Nginx+uwsgi的服务器前置环境部署

uWSGI+django+nginx的工作原理流程与部署历程