linux中网络存储与考试系统搭建(实现多用户可以共享文件)
上期内容回顾
1.数据备份的方式有哪些
全量和增量
2.数据备份的命令有哪些 都有哪些优点缺点
cp : 本地复制,全量复制
scp : 远程复制,全量复制
rsync : 远程复制,增量复制
3.rsync的参数有哪些并解释
参考上期博客
4.rsync守护进程模式的步骤
服务端
客户端
参考上期博客
5.rsync实时同步的步骤
参考上期博客
本期内容概要
- NFS 网络存储
- 实现NFS多主机共享(以考试系统为例)
内容详细
1.NFS简介
NFS 是 Network File System的缩写 及网络文件系统
NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录
NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS,ceph
2.NFS应用
1.用户访问NFS客户端,将请求转化为函数
2.NFS通过TCP/IP连接服务端
3.NFS服务端接收请求,会先调用portmap进程进行端口映射
4.Rpc.nfsd进程用于判断NFS客户端能否连接服务端
5.Rpc.mount进程用于判断客户端对服务端的操作权限
6.如果通过权限验证,可以对服务端进行操作,修改或读取

3.实现NFS多主机共享
3.1服务端
'''
nfs 作为服务端 172.16.1.31
web01 web02 web03 作为客户端 172.16.1.7/172.16.1.8/172.16.1.9
'''
# 确保在服务端进行(nfs)
1. 安装NFS和rpcbind
[root@nfs ~]# yum install nfs-utils rpcbind -y
2. 创建挂载点
[root@nfs ~]# mkdir /web/
[root@nfs ~]# mkdir /web/nfs{1..9}
3. 配置挂载点
[root@nfs ~]# vim /etc/exports
格式:
[挂载点] [可以访问的IP]([权限])
/web/nfs1 172.16.1.0/20(rw,sync,all_squash)
4. 关闭selinux和防火墙
[root@nfs ~]# setenforce 0
[root@nfs ~]# systemctl disable --now firewalld
5. 启动Nfs和rpcbind服务
[root@nfs ~]# systemctl start nfs-server
[root@nfs ~]# systemctl start rpcbind
6. 检查服务端是否正常
格式:
showmount -e 服务端的地址(默认是本机地址)
[root@nfs ~]# showmount -e
返回以下结果就是正常了
Export list for nfs:
/web/nfs1 172.16.1.0/20
或者
[root@nfs ~]# showmount -e 172.16.1.31
返回同样结果也是正常
Export list for 172.16.1.31:
/web/nfs1 172.16.1.0/20
7. 给挂载点授权
[root@nfs ~]# chown -R nfsnobody.nfsnobody /web
3.2客户端
'''
以在 web01 客户端操作为例
其余的客户端同样操作即可
'''
# 确保在客户端进行(web01 web02 web03)
1. 安装NFS
[root@web01 opt]# yum install -y nfs-utils
2. 创建目录
[root@web01 opt]# mkdir /opt/nfs/
3. 挂载NFS
[root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/
4. 测试NFS文件同步功能
[root@web01 ~]# cd /opt/nfs
[root@web01 nfs]# touch 1.txt
[root@web01 nfs]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 16:45 1.txt
到服务端查看:
[root@nfs ~]# ll /web/nfs1
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 16:45 1.txt
发现服务端也自动同步创建了
到其他客户端查看:
[root@web02 nfs]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 16:45 1.txt
[root@web03 nfs]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 16:45 1.txt
所有客户端都自动同步了
此刻 NFS多主机共享 已经成功实现
| nfs共享参数 | 参数作用 |
|---|---|
| rw | 读写权限 (常用) |
| ro | 只读权限 (不常用) |
| root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 (不常用) |
| no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 (不常用) |
| all_squash | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 (常用) |
| no_all_squash | 无论NFS客户端使用什么账户访问,都不进行压缩 (不常用) |
| sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 (常用) |
| async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 (不常用) |
| anonuid | 配置all_squash使用,指定NFS的用户UID,必须存在系统 (常用) |
| anongid | 配置all_squash使用,指定NFS的用户GID,必须存在系统 (常用) |
4.NFS配置详解
1. 控制读写
rw : 读写权限 (常用)
ro : 只读权限 (不常用)
可在服务端 vim /etc/exports
/web/nfs1 172.16.1.0/20(rw,sync,all_squash)
在括号内修改权限 每次修改完成都要重启 systemctl restart nfs-server rpcbind
到客户端操作文件测试
2. 控制文件权限
root_squash : 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 (不常用)
no_root_squash : 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 (不常用)
all_squash : 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 (常用)
no_all_squash : 无论NFS客户端使用什么账户访问,都不进行压缩 (不常用)
3. 控制写模式
sync : 同时将数据写入到内存与硬盘中,保证不丢失数据 (常用)
async : 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 (不常用)
4. 控制用户(将所有客户端用户统一 便于操作文件)
anonuid : 配置all_squash使用,指定NFS的用户UID,必须存在系统 (常用)
anongid : 配置all_squash使用,指定NFS的用户GID,必须存在系统 (常用)
01 创建统一用户
[root@nfs ~]# groupadd www -g 666
[root@nfs ~]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin
[root@web01 nfs]# groupadd www -g 666
[root@web01 nfs]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin
[root@web02 nfs]# groupadd www -g 666
[root@web02 nfs]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin
[root@web03 nfs]# groupadd www -g 666
[root@web03 nfs]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin
02 配置挂载点文件(都要在服务端操作!!!)
[root@nfs ~]# vim /etc/exports
/web/nfs1 172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)
重启
[root@nfs ~]# systemctl restart nfs-server rpcbind
03 修改挂载点权限(都要在服务端操作!!!)
[root@nfs ~]# chown -R www.www /web/
04 使用(客户端使用!!!)
如果创建的文件属主属组权限不是 WWW
可以重新挂载
[root@web01 opt]# umount /opt/nfs/
[root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/

5.搭建考试系统
5.1搭建WEB服务
1. 安装web软件(客户端操作)
[root@web01 nfs]# yum install httpd php php-devel -y
2. 将考试系统代码放置于网站的根目录
[root@web01 nfs]# cd /var/www/html/
将代码压缩包拖进来 并解压
[root@web01 html]# unzip kaoshi.zip
3. 授权
[root@web01 html]# chown -R www.www /var/www/html
4. 关闭selinux和防火墙
[root@web01 html]# setenforce 0
[root@web01 html]# systemctl disable --now firewalld
5. 修改web软件的用户
[root@web01 html]# vim /etc/httpd/conf/httpd.conf
User www
Group www
6. 启动web软件
[root@web01 html]# systemctl start httpd
7. 测试
01 在浏览器上输入你的客户端IP进入前端
02 点击上传图片
03 访问http://192.168.15.7/upload/1_linux.jpg (图片名称:1_linux.jpg)
04 用web01 web02 web03客户端都上传 之后用 web01 查看 web03 上传的图片(会报错找不到 属于正常)

5.2配合NFS实现文件共享
'''
目的为了用一台客户端访问所有客户端上传的文件 实现文件共享
'''
1. 修改NFS配置文件(服务端执行)
[root@nfs ~]# vim /etc/exports
添加一行内容:
/web/nfs1 172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)
2. 创建挂载点
[root@nfs ~]# mkdir /web/upload
[root@nfs ~]# chown www.www /web/upload
3. 重启NFS
[root@nfs ~]# systemctl restart nfs-server rpcbind
[root@nfs ~]# showmount -e
Export list for nfs:
/web/upload 172.16.1.0/20
/web/nfs1 172.16.1.0/20
4. 客户端安装NFS软件
[root@web01 html]# yum install nfs-utils -y
[root@web02 html]# yum install nfs-utils -y
[root@web03 html]# yum install nfs-utils -y
5. 挂载
[root@web01 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
[root@web02 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
[root@web03 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
6. 测试
web01 192.168.15.7上传 1_linux.jpg
web02 192.168.15.8上传 2_linux.jpg
web03 192.168.15.9上传 3_linux.jpg
然后用192.168.15.7 访问 3_linux.jpg
http://192.168.15.7/upload/3_linux.jpg
显示正常则实现了文件共享
"""
每次重启机器后 都要重新执行以下指令才可以:
服务端:
/web/
[root@nfs ~]# systemctl restart nfs-server rpcbind
[root@nfs ~]# showmount -e
Export list for nfs:
/web/upload 172.16.1.0/20
/web/nfs1 172.16.1.0/20
客户端:
/var/www/html/upload
/opt/nfs/
[root@web01 html]# systemctl start httpd
[root@web02 html]# systemctl start httpd
[root@web03 html]# systemctl start httpd
[root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/
[root@web02 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/
[root@web03 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/
[root@web01 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
[root@web02 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
[root@web03 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
"""
linux中网络存储与考试系统搭建(实现多用户可以共享文件)的更多相关文章
- 5 个在 Linux 中管理文件类型和系统时间的有用命令
对于想学习 Linux 的初学者来说要适应使用命令行或者终端可能非常困难.由于终端比图形用户界面程序更能帮助用户控制 Linux 系统,我们必须习惯在终端中运行命令.因此为了有效记忆 Linux 不同 ...
- [Intel Edison开发板] 06、Edison开发在linux中烧写、配置、搭建开发环境
1.前言 linux上烧写.配置.搭建Edison环境,千万不要用默认的setup tool for ubuntu!!! (即使,你用的就是ubuntu) 因为,其默认的工具会从一个坏链接下载配置文件 ...
- linux中网络配置
一.查看ip ipconfig 二.png 测试主机之间网络连通 ping 目标ip #测试当前服务器是否可以连接目的主机 三.linux配置网络环境 vim /etc/sysconfig/netwo ...
- Linux中keepalived+LVS负载均衡的搭建测试
1.1 LVS简介 LVS(Linux Virtual Server),也就是Linux虚拟服务器, 是一个自由软件项目.使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Lin ...
- linux中yum本地私有仓库安装搭建《全面解析》
目录 一:yum本地仓库安装 1.yum简介 2.yum安装解析 二:yum安装的生命周期 三:yum私有仓库作用与必要性 四:搭建yum私有仓库 本地版本 1.下载必须的软件包 2.创建软件仓库(就 ...
- Linux 中我该如何备份系统
系统备份概述 在前面的一些文章中,我反复提到经常会把系统搞崩溃,所以备份系统就是一件不容忽视的事情.由于 Linux 系统本身的优越性,系统的备份和还原还是比较容易的.主要表现在以下方面: Linux ...
- Arch Linux中禁用UTC解决双系统时间问题
原因 Windows双系统时间不统一在于时间表示有两个标准:localtime 和 UTC(Coordinated Universal Time) .UTC 是与时区无关的全球时间标准.尽管概念上有差 ...
- linux中网络编程<1>
1 网络编程API (1)网络层的ip地址可以唯一标识网络中的主机,传输层通过协议+端口唯一标识主机中的应用程序.这样以来使用三元组(地址,协议,端口)标识网络的进程. (2)socket---> ...
- Linux(环境篇):系统搭建本地FTP后,无法登录(331 Please specify the password.)问题解决
首先 Linux 搭建ftp,开放21端口.(省略...) 你可能会遇到以下问题:错误 SELinux is disabled 解决: setenforce: SELinux is disabled ...
随机推荐
- flink---实时项目--day02-----1. 解析参数工具类 2. Flink工具类封装 3. 日志采集架构图 4. 测流输出 5. 将kafka中数据写入HDFS 6 KafkaProducer的使用 7 练习
1. 解析参数工具类(ParameterTool) 该类提供了从不同数据源读取和解析程序参数的简单实用方法,其解析args时,只能支持单只参数. 用来解析main方法传入参数的工具类 public c ...
- final&static
final 1.final修饰类,那么该类不能有子类,那么也就没有子类重写父类的方法,也就没有多态 2.final修饰成员变量,那么成员变量要么显式赋值(用第一种),要么在构造方法中赋值 无论哪一种, ...
- lambda表达式快速创建
Java 8十个lambda表达式案例 1. 实现Runnable线程案例 使用() -> {} 替代匿名类: //Before Java 8: new Thread(new Runnable( ...
- oracle体系结构(图)
- 【MySQL】亲测可用的教程筛选:安装与卸载
windows版本的 安装看这篇,非常详细:https://www.cnblogs.com/winton-nfs/p/11524007.html 彻底清除:https://www.pianshen.c ...
- Java(运算符)
运算符 Java语言支持的运算符: 算术运算符:+,-,*,/,%(取余.求余)[模运算],++(自增),--(自减) 赋值运算符:= 关系运算符:>,<,>=(大于等于),< ...
- MySQL如何使用WITH ROLLUP函数
一.WITH ROLLUP函数适用于跟在GROUP BY 字段后面进行分组求和使用 SELECT t1.`产品名称`,SUM(t1.`数量`),SUM(t1.`金额`),t1.`日期` FROM sh ...
- NEEPU-CTF 2021公开赛 writeup
没打这场比赛,但是题目质量挺高的.赛后赶紧学习一波. RUSH B Linux入门 考linux指令的. cat hint.txt 提示让访问根目录. ls / 发现flag cat flag 提示说 ...
- [BUUCTF]REVERSE——[WUSTCTF2020]Cr0ssfun
[WUSTCTF2020]Cr0ssfun 附件 步骤: 例行检查,无壳儿,64位程序,直接ida载入,检索程序里的字符串,根据提示跳转 看一下check()函数 内嵌了几个检查的函数,简单粗暴,整理 ...
- 扬我国威,来自清华的开源项目火爆Github
前几天TJ君跟大家分享了几个有趣的Github项目(加密解密.食谱.新冠序列,各种有趣的开源项目Github上都有),其中呢,有不少是来自斯坦福大学的项目,当时TJ君就不由得想,什么时候能看到的项目都 ...