day03 部署NFS服务
阅读原文时间:2023年07月08日阅读:4

day03 部署NFS服务

1、什么是NFS
    共享网络文件存储服务器

2、NFS的原理
    1.用户访问NFS客户端,将请求转化为函数
    2.NFS通过TCP/IP连接服务端
    3.NFS服务端接收请求,会先调用portmap进程进行端口映射
    4.Rpc.nfsd进程用于判断NFS客户端能否连接服务端;
    5.Rpc.mount进程用于判断客户端对服务端的操作权限
    6.如果通过权限验证(依赖系统用户),可以对服务端进行操作,修改或读取

3、NFS的优点:
    1)NFS文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。
    2)NFS文件系统内存放的数据都在文件系统之上,所有数据都是能看得见。

4、NFS的缺点:
    1)存在单点故障, 如果构建高可用维护麻烦web->nfs()->backup
    2)NFS数据明文, 并不对数据做任何校验。
    3)客户端挂载NFS服务没有密码验证, 安全性一般(内网使用)


1、安装nfs服务
    [root@nfs ~]# yum install nfs-utils rpcbind -y   安装nfs软件

2、关闭防火墙和selinux
    [root@nfs ~]# setenfoce 0
    [root@nfs ~]# systemctl stop firewalld

3、创建一个目录,用于存放文件的仓库
    [root@nfs ~]# mkdir /data

4、创建一个系统用户,用于权限验证(权限验证时真正验证的时UID)
    [root@nfs ~]# useradd www -r -M -s /sbin/nologin -u 995

5、修改NFS的配置文件(作用:指定NFS的仓库及权限)
    NFS的配置文件:/etc/exports
    格式:
        [仓库地址]  [可以访问的IP段](权限) 

    [root@nfs data]# vim /etc/exports
    [root@nfs data]# cat /etc/exports
    /data   172.16.1.0/20(rw,all_squash,sync)

6、启动NFS服务
    [root@nfs ~]# systemctl start nfs-server rpcbind

7、查看NFS的挂载点是否设置成功
    # 查看指定服务器的挂载点
    [root@nfs data]# showmount -e 172.16.1.31

    # 查看本机的挂载点
    [root@nfs data]# showmount -e 

8、给服务端设置权限
    [root@nfs ~]# chown nfsnobody.nfsnobody /data/

9、挂载使用(客户端必须安装nfs-utils)
    [root@web01 ~]# yum install nfs-utils -y
    [root@web01 ~]# mount -t nfs 172.16.1.31:/data /opt
    [root@web01 ~]# df -h   # 查看挂载

注:要是想跟换用户
    [root@nfs data]# vim /etc/exports
    /data   172.16.1.0/20(rw,all_squash,sync,anonuid=995,anongid=995)
    [root@nfs ~]# systemctl start nfs-server rpcbind
    [root@nfs ~]# chown -R meng.meng /data/

NFS权限参数

控制NFS读写权限:
    rw            读写权限 (常用)
    ro            只读权限 (不常用)

控制访问NFS时,NFS基于的权限:
    root_squash        当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 (不常用)
    no_root_squash    当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 (不常用)
    all_squash        无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 (常用)
    no_all_squash    无论NFS客户端使用什么账户访问,都不进行压缩 (不常用)

控制NFS同步方式:
    sync    同时将数据写入到内存与硬盘中,保证不丢失数据 (常用),但是会产生延时
    async    优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 (不常用)

控制默认的用户(非必须):
    anonuid    配置all_squash使用,指定NFS的用户UID,必须存在系统 (常用)
    anongid    配置all_squash使用,指定NFS的用户UID,必须存在系统 (常用)


1、安装web服务软件
    [root@web01 ~]# yum install -y httpd php

2、上传代码
    [root@web01 ~]# cd /var/www/html
    [root@web01 html]# vim index.php
    <?php
    phpinfo();

3、开启web服务
    [root@web01 html]# systemctl start httpd


案例:将nfs中的图片,共享到web01上来访问
1、将图片上传至NFS服务器
    [root@nfs data]# ll
    total 28
    -rw-r--r-- 1 root      root      26724 Oct 20 20:19 1.png

2、将NFS挂载到web网站对应目录
    [root@web01 html]# mkdir img
    [root@web01 html]# mount -t nfs 172.16.1.31:/data /var/www/html/img/

3、上传代码
    [root@web01 html]# vim index.html
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <img src="./img/1.png" alt="">
</body>
</html>

4、查看浏览器


7、案例(注意:关闭selinux   setenforce 0)

1、安装web服务软件

    [root@web02 ~]# yum install httpd php -y

2、上传代码

3、将代码复制到网站根目录(/var/www/html)
    [root@web02 kaoshi]# cp -r ./*  /var/www/html/

4、开启web服务
    [root@web02 html]# cd /var/www/html
    [root@web02 html]# systemctl start httpd

5、统一用户
    1、创建用户
        [root@web02 html]# useradd www -r -M -s /sbin/nologin -u 996

    2、修改httpd的启动用户
        [root@web02 ~]# vi /etc/httpd/conf/httpd.conf
        User www
        Group www

    3、重启WEB服务软件
            [root@web02 ~]# systemctl restart httpd

    4、修改站点目录的用户
        [root@web02 ~]# chown -R www.www /var/www/html

    5、关闭selinux
        [root@web02 ~]#setenforce 0

    6、上传的文件共享至web01中
        [root@web02 html]# yum install nfs-utils -y
        [root@web02 html]# mount -t nfs 172.16.1.31:/data /var/www/html/upload
        [root@web02 html]# mount -t nfs 172.16.1.31:/data /var/www/html/img/