LNMP架构搭建

时间:2024-05-02 22:35:56

一: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

LNMP架构搭建

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

LNMP架构搭建

  • uwsgi作用:

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

  • uWSGI的适用:

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

  • 2.轻量级,好部署

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

LNMP架构搭建

  • 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

LNMP架构搭建

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

LNMP架构搭建

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

LNMP架构搭建

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

    LNMP架构搭建
9.网址测试
192.168.15.7:8000
代表成功 django自己在运行

LNMP架构搭建

三: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

LNMP架构搭建

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;
}
}

LNMP架构搭建

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

LNMP架构搭建

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

LNMP架构搭建