LNMP架构与uwsgi协议
LNMP架构
什么是LNMP架构
LNMP是一套技术的组合,L=Linux、N=Nginx、M~=MySQL(数据库)、P~=Python(后端编程语言)
为什么要用LNMP架构
- 因为 Nginx服务只能处理静态请求,不能处理动态请求
静态请求与动态请求
- 静态请求: 请求内容是静态文件
- 静态文件: 文件上传到服务器,永远不会改变的文件就是静态文件
- html就是一个标准的静态文件
- 动态请求: 请求的内容是动态的
- 不是真实存在服务器上的内容,是通过数据库或者其他服务拼凑成的数据
Nginx遇到请求的处理方案
- 当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回,如果是动态请求Nginx则通过uwsgi协议转交给后端的python程序处理
uwsgi协议
什么是uwsgi协议
- 与WSGI一样是一种通信协议,是uWSGI服务器的独占协议,用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型的描述,与WSGI协议是两种东西,据说该协议是fcgi协议的10倍快。
uwsgi协议作用
- 因为nginx不支持wsgi协议,无法直接调用py开发的webApp,因此需要uswgi协议来转发请求
- 在nginx+uWsgi+Django的框架里,nginx代理+webServer,uWsgi是wsgiServer,Django是webApp
- nginx接收用户请求,并判定那些转发到uWsgi,uWsgi再去调用pyWebApp
- 通过uwsgi来调用python代码,能够有效提高程序的性能
uwsgi服务部署
1、创建用户
[root@web01 opt]# groupadd django -g 888
[root@web01 opt]# useradd django -u 888 -g 888 -r -M -s /bin/sh
2、安装依赖软件
[root@web01 opt]# yum install python3 libxml* python-devel gcc* pcre-devel openssl-devel python3-devel -y
3、安装Django和uwsgi
[root@web01 opt]# pip3 install django
[root@web01 opt]# pip3 install uwsgi
4、创建项目
[root@web01 opt]# cd /opt
[root@web01 opt]# django-admin startproject linux
[root@web01 opt]# cd linux
[root@web01 opt]# django-admin startapp app01
[root@web01 linux]# vim linux/settings.py
ALLOWED_HOSTS = ['*']
DATABASES = {}
# 启动测试
[root@web01 linux]# python3 manage.py runserver 0.0.0.0:8000
5、编辑项目配置文件
[root@localhost ~]
[uwsgi]
socket = :8000
chdir = /opt/linux
wsgi-file = linux/wsgi.py
module = linux.wsgi
master = true
processes = 4
vacuum = true
6、启动uwsgi
[root@web01 linux]
-d : 以守护进程方式运行
--ini : 指定配置文件路径
--uid : 指定uid
TCP 服务
7、编辑Nginx配置文件
[root@localhost ~]
server {
listen 80;
server_name py.test.com;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
uwsgi_read_timeout 2;
uwsgi_param UWSGI_SCRIPT linux.wsgi;
uwsgi_param UWSGI_CHDIR /opt/linux;
index index.html index.htm;
client_max_body_size 35m;
}
}
8、重启Nginx配置
systemctl restart nginx
- 成功配置后输入域名就能够访问django页面了