ubuntu18.04+Nginx+uwsgi+Django介绍和部署

一:Nginx/uwsgi/Django介绍

1.1 Nginx简介

        Nginx 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。在高连接并发的情况下,Nginx是Apache服务器不错的替代品。 
        Nginx 一般监听服务器的80或者443端口(listen 80 就代表监听80端口),因为一般直接访问网站都是通过这两个端口,一台服务器可以绑定多个域名,根据不同的域名,Nginx会去找不同的地方去访问。

         Nginx和Apache一般都作为Web服务器。至于Tomcat,是一个Web应用容器,一般用于执行后台代码。一般来说,使用Nginx或者Apache处理客户端到服务器的请求,然后将请求交给Tomcat处理,Tomcat处理后返回数据给Nginx,最后Nginx将客户端请求的数据发给客户端。

1.2 Django简介

        Django是一个开放源代码的Web应用框架。

       为什么我们之前在使用Django开发项目的过程中, 直接使用python manage.py runserver 来运行服务器,也没有用到其他两个,就可以直接通过浏览器来访问?

        那是因为Django自带了wsgiref模块,可以作为wsgi服务器,可以对我们的http请求进行处理,但是性能不好,只能测试的时候用。到了真正部署的时候就要用到uWSGI服务器(Nginx也不是必须的,只是为了性能和安全方面的考虑,也是为了更好地处理静态资源)。 

1.3  uWSGI简介

         wsgi协议:一种实现python解析的通用接口标准/协议,是一种通用的接口标准或者接口协议,实现了python web程序与服务器之间交互的通用性。 利用它,web.py或bottle或者django等等的python web开发框架,就可以轻松地部署在不同的web server上了;


       uwsg协议i:同WSGI一样是一种通信协议。uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型,它与WSGI相比是两样东西。

      WSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。用于连接Web服务器和Web应用框架。

       uWSGI :一种python web server或称为Server/Gateway 。uWSGI类似tornadoweb或者flup,是一种python web server,uWSGI是实现了uwsgi和WSGI两种协议的Web服务器,负责响应python 的web请求。


1.4 工作原理 

1. 一般来说,客户端发起的http/https请求首先到达了HTTP和反向代理服务器(在这里我们使用Nginx作为服务器)。 
2. Nginx收到请求后,对请求进行解析处理(一般来说如果是静态请求,直接返回静态页面(纯HTML页面)),然后将请求发送给web服务器,也就是上述的uWSGI。 
3. uWSGI对来自Nginx的请求进行处理,将处理后的结果发送给Web应用框架(在这里我们使用Django)。 
4. Web应用框架收到请求之后,Web应用对请求进行处理(例如,Django通过某个函数进行处理),将结果返回给web服务器uWSGI。 
5. uWSGI收到Web应用框架的处理结果后,对该结果进行处理打包,发送给Nginx。 
6. Nginx将收到的结果返回给客户端。 


这三者之间信息的传递涉及到数据格式以及协议的转换。


二:安装部署

2.1 安装部署步骤

第一步:升级包库

apt-get update

第二步:安装Nginx

sudo apt-get install nginx

第三步:安装uwsgi

 pip3 install uwsgi

至此Django需要的环境完备,开始链接:


第四步:启动django,链到uwsgi

python3 manage.py runserver 0.0.0.0:8000
 uwsgi --http :8001 --chdir /home/yanfriends_server --file /home/yanfriends_server/yanfriendsserver/wsgi.py 

上述操作是用命令行的方式把uwsgi和Django连接起来的,每次都这样很麻烦,所以以后经常启动可以执行以下方法的操作:

***将参数都写进一个ini的文件中,以后启动uwsgi的时候,直接调用这个配置文件就方便很多了。方便起见,写在Django文件夹里。

[uwsgi]
chdir = /home/yanfriends_server
file = /home/yanfriends_server/yanfriendsserver/wsgi.py
master = True
processes = 4
max-requests = 5000
socket = 127.0.0.1:8002
uid = 1000
gid = 2000

***启动uwsgi

~# uwsgi --ini /home/yanfriends_server/yanfriendsserver/my_yanfriends_server_auto_run.ini 

第五步:设置nginx配置文件,nginx连接外网与uwsgi

~# cd /etc/nginx/sites-available/
~# vim your_project_nginx.conf

your_project_nginx.conf

server {
        listen 8001;
        server_name www.yanfriends.com;
        charset utf-8;
        client_max_body_size 75M;

        location /static {
                alias /home/yanfriends_server/static;
        }
        
        location /media {
                alias /home/yanfriends_server/;
        }

        location / {
                uwsgi_pass 127.0.0.1:8002;
                include /etc/nginx/uwsgi_params;
        }
}       

your_project_nginx.conf文件写好之后创建软链接(创建快捷方式放到sites-enabled/)

 ln -s /etc/nginx/sites-available/your_project_nginx.conf /etc/nginx/sites-enabled/your_project_nginx.conf

第六步:启动Nginx,至此全部步骤结束

~# nginx

三:维护相关

3.1 常用命令

一般性修改Django文件后的重启,杀掉的也是uwsgi,然后重启uwsgi。

netstat -ntpl

kill -9 19984

uwsgi --ini /home/yanfriends_server/yanfriendsserver/my_yanfriends_server_auto_run.ini 

查看内核中访问网络连接状态及其相关信息的进程:

查看进程:netstat -ntpl

假如修改了nginx的相应配置文件,需要重启Nginx的话:

nginx -s reload


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许进进

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值