本期内容概要

  • location
  • lnmp架构
  • 部署BBS项目

内容详细

1、location

使用Nginx Location可以控制访问网站的路径

但一个server可以有多个location配置

多个location是有优先级区分的 如下图:
匹配符 匹配规则 优先级
= 精确匹配 1
^~ 以某个字符串开头 2
~ 区分大小写的正则匹配 3(同级别自上而下匹配)
~* 不区分大小写的正则匹配 3(同级别自上而下匹配)
/ 通用匹配,任何请求都会匹配到 4
# 测试
先打包 /etc/nginx/conf.d目录下所有 .conf文件
[root@web01 conf.d]# vim test.conf
server {
listen 80;
server_name _; # '_' 匹配所有域名 location ~* /python { # 第三顺位(同级别自上而下匹配)
default_type text/html;
return 200 "Location ~*";
} location ~ /Python { # 第三顺位(同级别自上而下匹配)
default_type text/html;
return 200 "Location ~";
} location ^~ /python { # 其次匹配
default_type text/html;
return 200 "Location ^~";
} location = /python { # 首先匹配
default_type text/html;
return 200 "Location =";
}
}
[root@web01 conf.d]# systemctl restart nginx
浏览器输入 IP/python 测试
192.168.15.7/python
见下图:
  • 浏览器输入IP后加python 优先级最高先匹配 匹配到符合即停止

  • 浏览器输入IP后加python 注释掉优先级最高匹配内容 匹配到符合第二顺位即停止

  • 浏览器输入IP后加大写Python 注释掉优先级最高匹配内容和次优先级匹配内容 自伤而下匹配到符合匹配内容的即停止

  • 其他注释掉再匹配

  • 因为区分大小写 所有小写就会报错

2、lnmp架构

LNMP是一套技术的组合,L=Linux、N=Nginx、M=MySQL、P=Python

首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时, Nginx又是如何进行处理的
1.静态请求:请求的内容是静态文件就是静态请求
01 静态文件:文件上传到服务器,永远不会改变的文件就是静态文件
02 html就是一个标准的静态文件
2.动态请求:请求的内容是动态的就是动态请求
01 不是真实存在服务器上的内容,是通过数据库或者其他服务拼凑成的数据 当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回,如果是动态请求Nginx则通过uwsgi协议转交给后端的Python程序处理

2.1、uwsgi

因为nginx不支持wsgi协议,无法直接调用py开发的webApp

在nginx+uwsgi+Django的框架里,nginx代理+webServer,uWsgi是wsgiServer,Django是webApp

nginx接收用户请求,并判定哪些转发到uWsgi,uWsgi再去调用pyWebApp

主要作用就是:将nginx请求转发到python中去处理

2.2、uwsgi服务部署

1.创建用户
[root@web01 ~]# groupadd django -g 888
[root@web01 ~]# useradd django -u 888 -g 888 -r -M -s /bin/sh 2.安装依赖软件
[root@web01 ~]# yum install python3 libxml* python-devel gcc* pcre-devel openssl-devel python3-devel -y 3.安装Django和uwsgi
[root@web01 ~]# pip3 install django
[root@web01 ~]# pip3 install uwsgi 4.创建项目
[root@web01 ~]# cd /opt
[root@web01 opt]# django-admin startproject linux
[root@web01 opt]# cd linux
[root@web01 linux]# 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
  • [django]正常启动了

5.编辑项目配置文件
[root@web01 linux]# pwd
/opt/linux
[root@web01 linux]# vim myweb_uwsgi.ini
[uwsgi]
# 端口号
socket = :8000
# 指定项目的目录
chdir = /opt/linux
# wsgi文件路径
wsgi-file = linux/wsgi.py
# 模块wsgi路径
module = linux.wsgi
# 是否开启master进程
master = true
# 工作进程的最大数目
processes = 4
# 结束后是否清理文件
vacuum = true 6.启动uwsgi
[root@web01 linux]# uwsgi -d --ini myweb_uwsgi.ini --uid 666
-d : 以守护进程方式运行(后台运行)
--ini : 指定配置文件路径
--uid : 指定uid 7.编辑Nginx配置文件
[root@web01 linux]# cd /etc/nginx/conf.d
[root@web01 conf.d]# vim py.conf
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;
}
} [root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful 8.重启nginx配置
[root@web01 conf.d]# systemctl restart nginx
将域名:py.test.com 在Windows中解析
C:\Windows\System32\drivers\etc
192.168.15.7 game.marie.com game.chess.com py.test.com

3、部署BBS项目

1.部署数据库
先开启数据库服务器 db01
[root@db01 ~]# yum install mariadb* -y 2.启动数据库
[root@db01 ~]# systemctl start mariadb 3.远程连接MySQL数据
[root@db01 ~]# mysql
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; # 第一步
Query OK, 0 rows affected (0.00 sec) # 自动回显内容 MariaDB [(none)]> FLUSH PRIVILEGES; # 第二步
Query OK, 0 rows affected (0.00 sec) # 自动回显内容 MariaDB [(none)]> CREATE DATABASE `bbs` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; # 第三步
Query OK, 1 row affected (0.00 sec) # 自动回显内容 4.部署BBS
01 上传代码
[root@web01 ~]# unzip bbs.zip
[root@web01 ~]# mv bbs /opt/ 02 数据库迁移
[root@web01 ~]# cd /opt/bbs/app01/migrations
[root@web01 migrations]# rm -rf 00*
[root@web01 migrations]# rm -rf __pycache__/ [root@web01 migrations]# cd /opt/bbs/ 修改Django版本
[root@web01 bbs]# pip3 uninstall django
[root@web01 bbs]# pip3 install django==1.11 安装MySQL数据库插件
[root@web01 bbs]# pip3 install pymysql 修改数据连接
[root@web01 bbs]# vim bbs/settings.py
ALLOWED_HOSTS = ['*']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bbs',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '192.168.15.61',
'PORT': 3306,
'CHARSET': 'utf8'
}
} 创建数据库迁移文件
[root@web01 bbs]# python3 manage.py makemigrations 数据库迁移
[root@web01 bbs]# python3 manage.py migrate 03 配置UWSGI
[root@web01 bbs]# vim /opt/bbs/myweb_uwsgi.ini
[uwsgi]
# 端口号
socket = :8002
# 指定项目的目录
chdir = /opt/bbs
# wsgi文件路径
wsgi-file = bbs/wsgi.py
# 模块wsgi路径
module = bbs.wsgi
# 是否开启master进程
master = true
# 工作进程的最大数目
processes = 4
# 结束后是否清理文件
vacuum = true [root@web01 bbs]# uwsgi -d --ini myweb_uwsgi.ini --uid 666 04 配置Nginx
[root@web01 conf.d]# vim bbs.conf
server {
listen 80;
server_name bbs.test.com;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8002;
uwsgi_read_timeout 2;
uwsgi_param UWSGI_SCRIPT bbs.wsgi;
uwsgi_param UWSGI_CHDIR /opt/bbs;
index index.html index.htm;
client_max_body_size 35m;
}
}
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful [root@web01 conf.d]# systemctl restart nginx 05 测试访问BBS
将域名:py.test.com 在Windows中解析
C:\Windows\System32\drivers\etc
192.168.15.7 game.marie.com game.chess.com py.test.com bbs.test.com

nginx之location、inmp架构详解、BBS项目部署的更多相关文章

  1. Nginx之location 匹配规则详解

    有些童鞋的误区 1. location 的匹配顺序是“先匹配正则,再匹配普通”. 矫正: location 的匹配顺序其实是“先匹配普通,再匹配正则”.我这么说,大家一定会反驳我,因为按“先匹配普通, ...

  2. Nginx的介绍和安装详解

    [介绍+安装]Nginx的介绍和安装详解   == 介绍和安装 == Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当.Nginx ...

  3. RESTful 架构详解

    RESTful 架构详解 分类 编程技术 1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次 ...

  4. [转帖]Nginx的超时keeplive_timeout配置详解

    Nginx的超时keeplive_timeout配置详解 https://blog.csdn.net/weixin_42350212/article/details/81123932   Nginx  ...

  5. Nginx核心配置文件常用参数详解

    Nginx核心配置文件常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于Nginx权威文档的话童鞋们可以参考Nginx官方文档介绍:http://nginx.org/ ...

  6. 【菜鸟】RESTful 架构详解

    RESTful 架构详解 分类 编程技术 1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次 ...

  7. Nginx RTMP 模块 nginx-rtmp-module 指令详解

    译序:截至 Jul 8th,2013 官方公布的最新 Nginx RTMP 模块 nginx-rtmp-module 指令详解.指令Corertmp语法:rtmp { ... }上下文:根描述:保存所 ...

  8. Nginx基础篇(2)- Nginx基本配置文件和变量详解

    Nginx基本配置文件和变量详解 1. 基本配置文件 /etc/nginx/nginx.conf # nginx运行的用户 user nginx; # nginx进程数,建议设置为等于CPU总核心数. ...

  9. Nginx的超时timeout配置详解

    Nginx的超时timeout配置详解 本文介绍 Nginx 的 超时(timeout)配置. Nginx 处理的每个请求均有相应的超时设置.如果做好这些超时时间的限定,判定超时后资源被释放,用来处理 ...

随机推荐

  1. Linux学习 - IP地址配置

    1 首先选择桥接模式 2 配置IP.子网掩码.网关.DNS setup 本例中使用的是无线网连接, IP地址:  192.168.3.195 子网掩码:  255.255.255.0 网关: 192. ...

  2. Give You My Best Wishes

    亲耐滴IT童鞋们: 感谢大家一直以来的支持,因为有你们的支持,才有我这么"拼"的动力!!爱你们哟 OC的学习已经告一段落,希望大家通过阅读这几篇浅薄的随笔,能够寻找到解决问题的方法 ...

  3. vueAPI (data,props,methods,watch,computed,template,render)

    data Vue 实例的数据对象.Vue 将会递归将 data 的属性转换为 getter/setter,从而让 data 的属性能够响应数据变化.实例创建之后,可以通过vm.$data来访问原始数据 ...

  4. Linkerd Service Mesh 授权策略(Server & ServerAuthorization)

    简介 Server 和 ServerAuthorization 是 Linkerd 中的两种策略资源, 用于控制对 mesh 应用程序的入站访问. 在 linkerd 安装期间,policyContr ...

  5. 基于Github Actions + Docker + Git 的devops方案实践教程

    目录 为什么需要Devops 如何实践Devops 版本控制工具(Git) 学习使用 配置环境 源代码仓库 一台配置好环境的云服务器 SSH远程登录 在服务器上安装docker docker技术准备工 ...

  6. Python循环控制

    一.比较符 和算术操作符一样,布尔操作符也有操作顺序.在所有算术和比较操作符求值后,Python 先求值 not 操作符,然后是 and 操作符,然后是 or 操作符. 二.if控制 if name ...

  7. Nginx平滑升级版本

    目录 一.简介 说明 环境 二.安装 三.使用验证 一.简介 说明 Nginx版本迭代迅速,新版本提供了很多功能,好在Nginx支持不停服务进行升级. 版本之间差距不要太大,不然会导致很多东西不支持 ...

  8. 前端浅谈---协议相关(TCP连接)

    TCP连接 http的描述里面,我弱化了交互过程的描述,因为它相对复杂.所以我在此单独描述.客户端和服务端传递数据时过程相对谨慎和复杂,主要是开始和结束的过程.而这整个过程就是TCP连接.连接流程大体 ...

  9. Xpath 使用技巧

    使用xpath 简介 常见语法 选取节点 谓语 通配符 选取多个路径 运算符 其他用法 使用contains选取包含属性 使用tostring()将对象转换为字符串 使用starts-with 使用n ...

  10. CF1497A Meximization 题解

    Content 给定 \(n\) 个数 \(a_1,a_2,\dots,a_n\),你需要将这些数重新排列,使得 \(\sum\limits_{i=1}^n\operatorname{mex}(a_1 ...