Python全栈之路Day6

初次编辑2017年9月22日 21:44:24

摘要
一.nginx服务
二.nginx反向代理
三.共享存储nfs
作业
今日总结

摘要

引用:海峰老师

  1. nginx服务
  2. nginx.conf文件
  3. nginx反向代理
  4. 共享存储nfs

一.nginx服务

  1. nginx服务

    1. 装nginx前线装epel-release:yum install epel-release -y(基于这个源安装nginx)
    2. 安装nginx:yum install nginx -y
    3. 修改配置文件:vim /etc/nginx/nginx.conf
      • 其中access_log 为运行日志
      • server 下的root 为网站下的根目录 例如:/usr/share/nginx/html
      • cd到root下 vim打开 index.html文件,用户访问时会下载此文件
      • url 统一资源定位符:例如 http://192.168.1.1:80 定位到软件
      • uri 统一资源标识符:例如 http://192.168.1.1:80/a/b/c.txt 定位到文件 文件路径为:/usr/share/nginx/html/a/b/c.txt
    4. 编辑index.html文件,并重启 systemctl [re]start nginx
      • systemctl status nginx 为检查服务状态
      • systemctl disable nginx 为开机不启动
      • systemctl enable nginx 为开机启动
      • systemctl reload nginx 为重新加载,读取配置文件
    5. 关闭防火墙:systemctl stop firewalld(或者iptables -F 清理防火墙规则)
      • 因自己实验多次仍会出现权限问题,多方查阅,有以下处理方法

        • SELinux设置为开启状态(enabled)的原因

          首先查看本机SELinux的开启状态,如果SELinux status参数为enabled即为开启状态

          /usr/sbin/ sestatus -v

          或者使用getenforce命令检查

        • 找到原因了,如何关闭 SELinux 呢

          1、临时关闭(不用重启)

          setenforce 0

          2、修改配置文件 /etc/ selinux/config,将SELINUX=enforcing改为SELINUX=disabled

          vi /etc/ selinux/config

          注意:修改配置文件需要重启系统 reboot,之后再关闭防火墙即可。

    6. 即可访问
  2. nginx.conf文件
    1. location其中的"/"代表自定义的根目录,其中的{}可自己定义,例如 root /var/www/html;(注意以分号结尾)
    2. log_format 为日志格式

二.nginx反向代理

  1. 正向代理和反向代理:

    • 代理:A访问B,A把自己的请求让C代理,C去访问B
    • 正向代理:A明确地知道自己的代理C的存在,A明确地指定自己的代理地址是C,让C去访问B,拿到结果再给A,通常用来FQ
    • 反向代理:用户请求发给nginx后,由nginx负载给代理的机器,拿到结果,再由nginx返回给客户端(如此,nginx便把一堆自己代理的机器隐藏到后端,外界访问的就是nginx)
  2. 负载均衡
    • round-robin:轮询,依次给代理服务器;
    • least-connected:最小链接数;
    • ip-hash:根据IP地址(与会话保持有关);
  3. 反向代理配置

    引用:nginx反向代理

    1. 负载均衡设置

      • http中的upstream :定义nginx需要管理的一组机器,组名为myapp1,server为代理服务器
      • location /中 修改为:proxy_pass http://myapp1;
    2. 最小连接数设置
      • 只需在server上一行 增加least_conn; 即可
    3. ip-hash设置
      • 只需在server上一行 增加ip_hash; 即可
    4. 权重设置
      • 需在server此行 增加weight=number 即可(number为权重为几次)

三.共享存储nfs

  1. 安装

    1. 需先安装rpc协议软件包及nfs软件包:yum install rpcbind nfs-utils -y
  2. 配置
    1. 配置文件为 /etc/exports (这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容)
    2. /etc/exports文件内容格式:
      • <输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
      • 输出目录:输出目录是指NFS系统中需要共享给客户机使用的目录;
      • 客户端:客户端是指网络中可以访问这个NFS输出目录的计算机
      • 访问权限选项
        • 设置输出目录只读:ro
        • 设置输出目录读写:rw
      • 具体请见 第19单元NFS服务

        引用:nfs服务

    3. 修改配置
      • [[email protected] nginx]# cat /etc/exports
      • /share 192.168.31.0/24(rw,sync,fsid=0)
        • 192.168.31.0/24:指定子网中的所有主机
        • sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
    4. 文件存储和块存储及对象存储
      • 块存储: 硬盘
      • 文件存储: 直接可以创建 增删改查
      • 对象存储: 创建 更改需要加载到本地 再上传
    5. 开权限(nfs开启了w权限还不行,others还需要对/share目录有w权限)
      • chmod -R o+w /share
    6. 开机启动
      1. systemctl enable nfs-server.service
      2. systemctl enable rpcbind.service
    7. 启动服务
      1. systemctl start rpcbind.service(必须先启动)
      2. systemctl start nfs-server.service
    8. 确认nfs服务器启动成功
      1. rpcinfo
      2. exportfs
      3. showmount -e #默认查看自己共享的服务,前提是要DNS能解析自己,不然容易报错
      4. showmount -a #显示已经与客户端连接上的目录信息
  3. 客户端配置
    1. yum install rpcbind nfs-utils -y:安装软件
    2. systemctl enable rpcbind.service && systemctl start rpcbind.service:开机启动
    3. showmount -e NFS服务器IP #检查 NFS 服务器端是否有目录共享
    4. mount -t nfs 192.168.31.106:/share /var/www/html/ :挂载
  4. 测试
    • 基于nginx的负载均衡配置,打开后端被代理服务的access.log日志,tail -f access.log来观察访问,访问LB刷新页面发现内容保持一致,但是每台被代理的机器的access.log日志都有新的内容进来

作业

今日总结

  1. nginx访问

    • 浏览器通过IP及端口定位到nginx软件
    • nginx会读取自己的配置文件nginx.conf 获取根目录
    • 通过根目录获取文件
    • 以http协议发送回去
  2. nginx反向代理
    • 反向代理设置
  3. nfs共享存储
    • 服务端
    • 客户端
时间: 2024-11-13 09:45:11

Python全栈之路Day6的相关文章

Python全栈之路系列之赋值与运算符

Python全栈之路系列之赋值与运算符 在继续下面的文章之前我们先来浏览一下Python为我们提供的几种运算符,定义两个变量,分别是a和b,a的值是10,b的值是20. 算术运算符 运算符 描述 实例 + 加,两个对象相加 a+b=30 - 减,两个对象相减,可能会得到负数 a-b=-10 * 乘,两数相称或是返回一个被重复若干次的字符串 a*b=200 / 除,两个对象相除 b/a=2 % 取膜,返回除法的余数 b%a=0 ** 幂,返回x的y次幂 a**b=10000000000000000

Python全栈之路_01

Python全栈之路 前言:因为Python主要是在Linux和widows操作系统上使用所以,首先就介绍Pyhton在这两个平台上的安装和一些基础知识 Linux系统下安装Pyhton 1.工具 虚拟机:VMware workstation 12 Pro Linux系统:CentOS 64 位 VMware虚拟机安装很简单就不说明了. 在虚拟机安装CentOS 需要注意的是: 运行内存分配1G左右即可 可以开机按F2进入bios界面boot目录下选择启动设备选择Hard Drive为优先启动位

python 全栈之路

python 全栈之路 一. python 1. Python基础知识部分 Python Python那点事 Python windows和linux下 安装 Python2,Python3 Python 开启入坑之路 Python 基本数据类型 Python 那些零碎的知识点 Python -函数 Python - 面对对象 Python - 模块 Python - 文件操作 Python - python中经常踩得的坑 2. Python - 网络编程 3. Python - 并发编程 二.

Python全栈之路----常用模块----hashlib加密模块

加密算法介绍 HASH       Python全栈之路----hash函数 Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值. 简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数. HASH主要用于信息安全领域中加密算法,他把一

Python全栈之路----函数----返回值

函数外部的代码想要获取函数的执行结果,就可以在函数里用return语句,把结果返回. def stu_register(name,age,course='PY',country='CN'): print('----注册学生信息----') print('姓名:',name) print('年龄:',age) print('国籍:',country) print('课程:',course) if age > 22: return False else: return True registriat

Python全栈之路系列----之-----面向对象4接口与抽象,多继承与多态)

接口类与抽像类 在python中,并没有接口类这种东西,即便不通过专门的模块定义接口,我们也应该有一些基本的概念 编程思想 归一化设计: 1.接口类 不实现具体的方法,并且可以多继承 2.抽象类 可以做一些基础实现,并且不推荐多继承 编程的几类原则: 开放封闭原则:对扩展示开放的,对修改是封闭的依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该应该依赖细节:细节应该依赖抽象.换言之,要针对接口编程,而不是针对实现编程接口隔离原则:使用多个专门的接口,而不使用单一的总接口.

python全栈之路【四】测试 2

1.请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'eric', 'rain'] li = ['alex', 'eric', 'rain'] v = "_".join(li) print(v) alex_eric_rain 2.查找列表中元素,移除每个元素的空格,并查找以 a 或 A 开头 并且以 c 结尾的所有元素. li = ["alec", " aric", "Alex", &quo

Python全栈之路Day1(补)

2017年9月18日 0:20:28 摘要一.计算机硬件介绍二.计算机启动流程作业今日总结 摘要 引用:东方越迁blog 因前期笔记整理较差,故重新开始整理笔记并且每日上传至blog. 一.计算机硬件介绍 概念:由一条总线把CPU.内存和I/O设备串联起来并与其他设备进行通信.CPU负责运算,内存用于储存临时变量,硬盘用于储存数据 处理器CPU(寄存器+控制器) 取指令->解码->执行,直到程序结束. 通用寄存器:用来保存变量和临时结果 程序计数器:它保存了将要取出的下一条指令的内存地址.在指

Python全栈之路系列----之-----re模块(正则表达式)

正则表达式并不是python中的一部分,正则表达式适用于处理字符串的强大工具,拥有自己独特的语法,以及独立的处理引擎.在提供了正则表达式的语言中都它的语法是都一样的 re模块本质上和正则表达式没有一毛钱的关系,re模块是python提供给我们方便操作正则的工具而已 正则表达式概念 使用单个字符串规则来描述匹配一系列符合某个句法规则的字符串 是对字符串操作的一种逻辑公式 应用场景:处理文本和数据 正则表示是过程:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功:否则匹配失败 正