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 ...
随机推荐
- [学习总结]5、Android的ViewGroup中事件的传递机制(二)
下面是第一篇的连接 Android的ViewGroup中事件的传递机制(一) 关于onInterceptTouchEvent和onTouchEvent的详细解释. 1 public class Mai ...
- vue页面常用方法
输入框事件监听(三):blur与change的差异 iview 验证 trigger: 'blur,change', 同时加两个,省的每次还想input 还是 select 4.加载:Loading ...
- Actuator监控器
一.简介 Actuator(激励者;执行器)是Spring Boot提供的一个可挺拔模块,用于对工程进行监控.其通过不同的监控终端实现不同的监控功能.其功能与Dubbo的监控中心类似,不同的是,Dub ...
- JavaEE复习三
Http协议是基于请求/响应模式.无状态的协议:所有请求时相互独立的.无连续的:服务器无法记住与识别用户. 对于简单的页面浏览或信息获取,http协议可以完全胜任:对于需要提供客户端和服务器端交互的网 ...
- 智龙开发板搭建llsp环境
智龙开发板搭建llsp(linux+lighttpd+sqlite3+php)环境 1. 准备 1. 智龙开发板V3 2. 软件编译环境:VirtualBox6+CentOS6.10-i386.min ...
- Mysql实例 表设计
目录 一.介绍 二.设计表格 三.查询 查都有哪些公司 查A公司都放了哪些广告 查A公司10月份该交多少广告费 四.分析 表结构设置 sql语句 其它功能 一.介绍 有一个公司叫月亮集团,他们旗下有很 ...
- Nginx模块之nginx_upstream_check_module
目录 一.介绍 二.使用 三.参数 一.介绍 大家都知道,前端nginx做反代,如果后端服务器宕掉的话,nginx是不能把这台realserver剔除upstream的,所以还会有请求转发到后端的这台 ...
- java中注释、关键字、标识符,数据类型(上)
一.java中的注释(有3种) 注释:是给写代码的人看的,注释不会被执行 单行注释:用符号"//"实现 多行注释:用"/* */ " 实现 javaDoc(文档 ...
- ES6解构赋值的简单使用
相较于常规的赋值方式,解构赋值最主要的是'解构'两个字,在赋值的过程中要清晰的知道等号右边的结构. 先简单地看一下原来的赋值方式. var a=[1,2] 分析一下这句代码的几个点: (1)变量申明和 ...
- 简单的理解 Object.defineProperty()
Object.defineProperty()的作用就是直接在一个对象上定义一个新属性,或者修改一个已经存在的属性. Object.defineProperty(obj,prop,descriptor ...