LNMP架构搭建
2024-10-19 17:40:59
目录
一:LNMP架构简介
- LNMP是一套技术的组合,L=Linux、N=Nginx、M=MySQL、P=Python
首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时, Nginx又是如何进行处理的。
1.静态请求:请求的内容是静态文件就是静态请求
1.静态文件:文件上传到服务器,永远不会改变的文件就是静态文件
2.html就是一个标准的静态文件
2.动态请求:请求的内容是动态的就是动态请求
1.不是真实存在服务器上的内容,是通过数据库或者其他服务拼凑成的数据
当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回
如果是动态请求Nginx则通过uwsgi协议转交给后端的Python程序处理
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.轻量级,好部署
- 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/
最新文章
- selenium多个窗口切换
- 使用AJAX完成用户名是否存在异步校验
- CopyU!下一次更新将增加对设备厂商及型号的识别!
- Android实用代码七段(一)
- Android中的Adapter 详解
- 数据分页SQL语句的比较
- Smarty 使用继承方式实现配置
- EasyUi 中datagrid 实现查询方法
- Python练习2
- 解Linux SSH命令大全,新手必看SSH命令
- vue 格式化银行卡(信用卡)每4位一个符号隔断
- Java开发笔记(七十二)Java8新增的流式处理
- iview select filterable属性使用下拉小bug
- SPOJ COT Count on a tree(树上主席树 + LCA 求点第k小)题解
- Django content_type 简介及其应用
- Senparc.Weixin SDK v5.0 升级公告
- Java读文件
- 《深入理解Android内核设计思想》已陆续在全国各大书店及网上书店上市,感谢大家一直以来的支持~~
- ZooKeeper参数调优
- Android Studio 使用Intent实现页面的跳转(带参数)
热门文章
- 【LeetCode】949. Largest Time for Given Digits 解题报告(Python)
- 【剑指Offer】不用加减乘除做加法 解题报告(Java)
- idea解决springboot项目中log4j漏洞升级问题
- CS5265typec转HDMI2.0方案说明书|Capstone CS5265typec转HDMI4K60HZ单转电路|瑞奇达CS5265typec拓展坞设计
- Java初学者作业——分别计算两个整数加、减、乘、除的结果并显示,要求除法保留两位小数。
- contos mongodb 安装
- Notepad++插件Base64编解码
- javascript中逻辑运算(||,&;&;,!)
- Java时间格式化原来这么多玩法
- Flask_cookie和session(五)