一:LNMP架构简介

  • LNMP是一套技术的组合,L=Linux、N=Nginx、M=MySQL、P=Python
首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时, Nginx又是如何进行处理的。
1.静态请求:请求的内容是静态文件就是静态请求
1.静态文件:文件上传到服务器,永远不会改变的文件就是静态文件
2.html就是一个标准的静态文件
2.动态请求:请求的内容是动态的就是动态请求
1.不是真实存在服务器上的内容,是通过数据库或者其他服务拼凑成的数据
  • 当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回

  • 如果是动态请求Nginx则通过uwsgi协议转交给后端的Python程序处理

  • 详细动静分离:https://www.cnblogs.com/goOJBK/p/15769100.html

1.Nginx与uwsgi
因为nginx不支持wsgi协议,无法直接调用py开发的webApp。
在nginx+uWsgi+Django的框架里,nginx代理+webServer,uWsgi是wsgiServer,Django是webApp。
nginx接收用户请求,并判定哪些转发到uWsgi,uWsgi再去调用pyWebApp。

  • uwsgi作用:

  • uWSGI是一个全功能的HTTP服务器,实现了WSGI协议、uwsgi协议、http协议等。它要做的就是把HTTP协议转化成语言支持的网络协议。比如把HTTP协议转化成WSGI协议,让Python可以直接使用。

  • uWSGI的适用:

  • 1.单节点服务器的简易部署

  • 2.轻量级,好部署

  • 详细uwsgi作用:https://www.cnblogs.com/goOJBK/p/15769094.html

  • Nginx的作用
  • Nginx是一个Web服务器其中的HTTP服务器功能和uWSGI功能很类似,但是Nginx还可以用作更多用途,比如最常用的反向代理功能。
  • nginx的适用:
  • 1.反向代理,可以拦截一些web攻击,保护后端的web服务器
  • 2.负载均衡,根据轮询算法,分配请求到多节点web服务器
  • 3.缓存静态资源,加快访问速度,释放web服务器的内存占用,专项专用

二:django框架+python

1.创建用户
[root@web02 linux]# groupadd django -g 888
[root@web02 linux]# useradd django -u 888 -g 888 -r -M -s /bin/sh
2.安装依赖包
[root@web01 linux]# yum install python3 libxml* python-devel gcc* pcre-devel openssl-devel python3-devel -y
3.安装uwsgi和django
[root@web01 linux]# pip3 install uwsgi
安装django框架
[root@web01 linux]# pip3 install django==2.2.2

4.测试python
python3
5.创建django项目
[root@web02 opt]# cd /opt/
[root@web02 opt]# django-admin startproject linux
6.在项目中创建应用
[root@web02 opt]# cd linux/
[root@web02 linux]# pwd
/opt/linux
[root@web02 linux]# django-admin startapp application

7.修改配置文件
			[root@web02 linux]# vim /opt/linux/linux/settings.py
ALLOWED_HOSTS = ['*']
DATABASES = {}

8.启动,django浏览器访问
	[root@web02 linux]# pwd
/opt/linux
[root@web02 linux]# python3 manage.py runserver 0.0.0.0:8000
  • 目前状态正在运行
  • ctdrl + c 就代表关闭

9.网址测试
192.168.15.7:8000
代表成功 django自己在运行

三:uwsgi服务器部署

1.编辑项目启动配置文件
			[root@web01 linux]# cd /opt/linux
[root@web01 linux]# vim myuwsgi.ini
[uwsgi]
# 端口号
socket = :8000
# 指定项目的目录
chdir = /opt/linux
# wsgi文件路径
wsgi-file = linux/wsgi.py
# 模块wsgi路径
module = linux.wsgi
# 是否开启master进程(开启)
master = true
# 工作进程的最大数目
processes = 4
# 结束后是否清理文件
vacuum = true

2.启动uwsgi
[root@web02 linux]# cd /opt/linux
[root@web02 linux]# uwsgi -d --ini myuwsgi.ini
代表成功
[uWSGI] getting INI configuration from myuwsgi.ini
以上方法即可 以下开启参考
启动uwsgi(后台启动)
[root@web01 linux]# uwsgi -d --ini myweb_uwsgi.ini --uid 666 参数:
-d : 以守护进程方式运行
--ini : 指定配置文件路径
--uid : 指定uid
3.查看uwsgi进程列表
[root@web02 linux]# ps -ef | grep uwsgi
4.配置Nginx连接uwsgi
uwsgi是TCP服务   TCP服务包含http  http不包含TCP
切换路径
[root@web01 linux]# cd /etc/nginx/conf.d/
创建配置文件
[root@web01 conf.d]# vim python.conf
        # nginx配置文件(网站)
server {
# 监听的端口
listen 80;
# 配置域名
server_name py.test.com;
# 配置路径
location / {
# 加载Nginx代理uwsgi的配置项
include uwsgi_params;
# 指定uwsgi的访问地址
uwsgi_pass 127.0.0.1:8000;
# 连接uwsgi的超时时间
uwsgi_read_timeout 2;
# 自定义uwsgi代理项目的路径及配置项
uwsgi_param UWSGI_SCRIPT linux.wsgi;
# 指定python项目的路径
uwsgi_param UWSGI_CHDIR /opt/linux;
# 索引文件
index index.html index.htm;
# 客户端上传文件的最大值
client_max_body_size 35m;
}
}

5.测试
nginx -t
6.重启Nginx
[root@web02 conf.d]# systemctl restart nginx
7.DNS解析
192.168.15.7 py.test.com

地址:C:\Windows\System32\drivers\etc

8.部署uwsgi(网址测试)
http://py.test.com/

最新文章

  1. selenium多个窗口切换
  2. 使用AJAX完成用户名是否存在异步校验
  3. CopyU!下一次更新将增加对设备厂商及型号的识别!
  4. Android实用代码七段(一)
  5. Android中的Adapter 详解
  6. 数据分页SQL语句的比较
  7. Smarty 使用继承方式实现配置
  8. EasyUi 中datagrid 实现查询方法
  9. Python练习2
  10. 解Linux SSH命令大全,新手必看SSH命令
  11. vue 格式化银行卡(信用卡)每4位一个符号隔断
  12. Java开发笔记(七十二)Java8新增的流式处理
  13. iview select filterable属性使用下拉小bug
  14. SPOJ COT Count on a tree(树上主席树 + LCA 求点第k小)题解
  15. Django content_type 简介及其应用
  16. Senparc.Weixin SDK v5.0 升级公告
  17. Java读文件
  18. 《深入理解Android内核设计思想》已陆续在全国各大书店及网上书店上市,感谢大家一直以来的支持~~
  19. ZooKeeper参数调优
  20. Android Studio 使用Intent实现页面的跳转(带参数)

热门文章

  1. 【LeetCode】949. Largest Time for Given Digits 解题报告(Python)
  2. 【剑指Offer】不用加减乘除做加法 解题报告(Java)
  3. idea解决springboot项目中log4j漏洞升级问题
  4. CS5265typec转HDMI2.0方案说明书|Capstone CS5265typec转HDMI4K60HZ单转电路|瑞奇达CS5265typec拓展坞设计
  5. Java初学者作业——分别计算两个整数加、减、乘、除的结果并显示,要求除法保留两位小数。
  6. contos mongodb 安装
  7. Notepad++插件Base64编解码
  8. javascript中逻辑运算(||,&&,!)
  9. Java时间格式化原来这么多玩法
  10. Flask_cookie和session(五)