目录
一、yum仓库
(一)yum仓库简介
(二)实现过程
(三)yum命令
(四)搭建内网yum仓库
1.FTP服务搭建yum仓库
①服务端操作
②客户端操作
2.http服务搭建yum仓库
①服务端操作
②客户端操作
二、NFS文件共享
(一)NFS基本信息
(二)实验操作
1.创建共享目录
2.启动服务
3.配置NFS客户端
4.使用权限
(三)搭建一台NFS共享服务器
1.服务端开启NFS服务
2.创建共享文件
3.挂载使用
Yum仓库(Yum Repository)是基于RPM包管理的Linux操作系统中用于存储和管理软件包的一个集中式资源库。在使用yum作为包管理器的系统(如CentOS、RHEL等)中,用户可以方便地通过yum工具从预先配置好的仓库中搜索、安装、更新或卸载软件包。
主要特点:
自动解决依赖关系: 相对于rpm来说,当用户尝试安装某个软件包时,yum会自动分析该软件包的依赖关系,并从仓库中下载所有必需的依赖包,确保软件能够正确安装和运行。
版本管理和更新: yum仓库中维护着软件包的不同版本,可以根据策略选择安装最新的稳定版或者指定特定版本的软件包。此外,yum还提供软件更新功能,可以检测并自动升级系统中的过期软件包到最新可用版本。
多个仓库支持: 用户可以在系统中配置多个yum仓库,这样可以从不同的来源获取软件包,例如官方仓库、社区仓库、私有仓库等。
GPG签名验证: yum支持对仓库内容进行GPG签名验证,以确保从仓库下载的软件包未被篡改和保证其来源可信。
缓存机制: yum具有本地缓存功能,它可以将已下载过的软件包元数据和文件保存在本地,从而提高后续操作的速度,减少网络传输。
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
yum实现安装服务的过程
查看yum的配置文件
[main] #全局配置
cachedir=/var/cache/yum/$basearch/$releasever
#这行定义了yum下载和存储软件包元数据以及临时文件的缓存目录位置。其中 $basearch 表示系统的基本架构(如x86_64、i386等), $releasever 表示操作系统的发行版版本号。
keepcache=0
#当设置为0时,表示在安装或更新软件包后自动清理缓存中的软件包文件。如果改为1,则会保留所有已下载的软件包文件。
debuglevel=2
#设置yum运行时的调试级别。数字越高,输出的日志信息越详细。
logfile=/var/log/yum.log
#指定yum日志文件的位置,所有yum的操作记录都会写入这个文件。
exactarch=1
#当值为1时,yum将只安装与系统架构精确匹配的软件包。
obsoletes=1
#启用此选项意味着yum在执行更新操作时,会处理那些可能使其他已安装软件包变得过时(obsolete)的新软件包。
gpgcheck=1
#如果设置为1,yum会在安装软件包前验证其签名,确保软件包来源可信且未被篡改。
plugins=1
#启用yum插件功能,允许通过插件扩展yum的功能。
installonly_limit=5
#限制yum保留的最大旧版本数量,对于某些只能安装一个实例的软件包,yum最多只会保留最近的5个旧版本。
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
#提供了一个链接地址,当遇到yum相关的问题时,可以提交bug报告到CentOS官方的bug追踪系统。
distroverpkg=centos-release
#定义了用来检测和确定当前操作系统版本的关键软件包名称,对于CentOS系统来说,就是centos-release包。
这里的配置文件基本默认就可以,不需要我们去修改
yum repolist all | 列出所有仓库 |
yum list all | 列出仓库中所有软件包 |
yum info 软件包名称 | 查看软件包信息 |
yum install 软件包名称 | 安装软件包 |
yum reinstall 软件包名称 | 重新安装软件包 |
yum update 软件包名称 | 升级软件包 |
yum remove 软件包 | 移除软件包 |
yum clean all | 清除所有仓库缓存 |
yum check-update | 检查可更新的软件包 |
yum grouplist | 查看系统中已经安装的软件包组 |
yum groupinstall 软件组 | 安装指定的软件包组 |
yum groupremove 软件包组 | 移除指定的软件包组 |
yum groupinfo 软件包组 | 查询指定的软件包组信息 |
yum remove | 卸载具体软件 |
yum provides | 精确查找 |
yum history | 查看当前yum操作历史 |
yum history undo | 加入序号卸载序号里安装的软件 |
yum history redo | 加入序号重新执行序号里的操作 |
服务端 | 192.168.83.30 |
客户端 | 192.168.83.40 |
检查两台机器防火墙与核心防护是否关闭,如果没有关闭执行systemctl stop firewalld 与setenforce 0 命令
下载vsftpd软件,提供服务 :yum install vsftpd -y
开启vsftpd服务:systemctl start vsftpd
在ftp程序用户的家目录下新建一个目录
将光盘挂载到新建目录,为ftp用户提供安装包
切换到yum程序目录:cd /etc/yum.repos.d而后,创建一个目录mkdir kysw
而后将yum的相关文件移动到新建目录中,防止信息干扰mv *.repo kysw
新建一个仓库文件,以.repo结尾:vim ftp.repo
[ftp] #仓库描述
name=ftp #仓库名称
baseurl=ftp://192.168.83.30/kysw #安装包来源。通过ftp服务,连接到192.168.83.30
的服务端.IP地址后面的“/”。相当于ftp程序用户的
家目录/var/ftp
gpgcheck=0 #不启用验证。0为不启用,1为启用
#gpgkey=file://公钥文件地址 #若启用验证需要指定公钥文件地址
清理缓存、下载元信息:yum clean all & yum makecache
yum install tree -y 验证一下
下载httpd服务软件,yum install httpd -y 并开启
在/var/www/html/下新建一个文件夹,并将光盘挂下到该目录下mkdir /var/www/html/http
操作流程与FTP服务搭建yum仓库基本一致
切换到yum程序目录:cd /etc/yum.repos.d而后,创建一个目录mkdir http
而后将yum的相关文件移动到新建目录中,防止信息干扰mv *.repo http
新建一个仓库文件,以.repo结尾:vim http.repo
注释:这里的baseurl信息中的IP地址后面的"/"就是/var/www/html,其它信息与ftp服务搭建yum仓库一致
清理缓存、下载元信息:yum clean all & yum makecache
下载软件验证一下
早期网络想要在不同主机之间共享文件大多要用 FTP 协议来传输,但FTP 协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了NFS 开源文件共享程序:NFSINetworkFile Svstem)是一个能够将多台Linux 的远程主机数据挂载到本地目录的服务,属于轻量级的文件共享服务,不支持Linux与 Windows 系统间的文件共享
NFS(Network File System)是一种分布式文件系统协议,允许网络中的不同计算机之间共享和访问文件资源。在Linux环境中,通过配置NFS服务,可以将一台服务器上的目录作为共享资源提供给其他客户端挂载和使用,实现跨主机的文件共享。
实现过程:
NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。(远端过程调用:自己没有这种功能,调用别人的功能)
NFS 也是 NAS 存储 设备必然支持的一种协议 以完成远 程到本地的映射过程。在 CentOS 7 系统中,需要 nfs-utils、rpcbind 软件包来提供 NFS 共享服务, 前者用于 NFS 共享发布和访问,后者用于 RPC 支持。
手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs
准备两台机器
NFS服务端 | 192.168.83.30 |
NFS客户端 | 192.168.83.40 |
在centos7中,NFS服务的工具是默认安装了的
先创建连个文件夹,在输入一些内容供NFS客户端读取
修改配置文件,定义要共享的目录及相应权限
这个配置文件位置在/etc/exports
配置内容格式为:共享目录 可以访问的主机地址(权限)
权限分类有以下几种
参数 | 作用 |
ro | 只读模式(默认) |
rw | 读写模式 |
root_squash | 当NFS 客户端使用 root 用户访问时,映射为 NFS 服务端的匿名用户 |
no_root_squash | 当NFS客户端使用 root 用户访问时,映射为NFS 服务端的 root 用户 |
all_squash | 不论 NFS 客户端使用任何帐户,均映射为 NFS 服务端的匿名用户 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据。 |
async | 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能造成数据丢失 |
下面我们来编辑配置文件,添加以下内容
配置好文件后启动服务和配置文件
客户端如果也是centos7的话,那么应该也是安装了nfs-utils工具包的(字符界面可能需要手动安装),直接挂载共享就可以了
挂载之前,先使用jshowmount 命令查看以下服务端的共享信息
-a :显示 NFS 服务端的共享列表
-e:显示本机挂载 NFS 资源的情况
-v:显示版本号
下一步,我们来进行挂载
使用mount命令
mount 对方IP地址:共享文件夹 挂载点
非指定用户是无法使用共享文件的
如果想永久挂载需要写道/etc/fstab文件中
192.168.83.30:/data /opt nfs defaults _netdev 0 0
#IP地址:/共享文件名 #挂在点 #文件类型 #权限 #没网不加载 #不备份 #不检查
此时,我们是有读写权限的
但是,我们创建文件的时候为什么还会显示失败呢?
那是因为对/data文件目录还没有权限。之前在介绍FTP服务的时候说过,我们的服务已经添加了相应的权相,但是对文件本身还没有权限,虽然我们是在客户端的root用户,但是,我们现在访问的是服务端的文件夹,root用户的超级管理员身份在服务端并没有效果,所以,还需要修改一下服务端的文件的权限
现在再去客户端创建文件就可以了
我们又发现,创建的文件属主和属组是一个陌生的用户nfsnobody,这就是之前说的
root_squash权限:当NFS 客户端使用 root 用户访问时,映射为 NFS 服务端的匿名用户
细心的人,在启动服务的时候就会发现后面有一排的权限
如何创建文件属主为root用户呢?很简单,修改一下权限就可以了
保存退出后需要重新加载一下配置文件,如果直接重启服务的话,正在操作的用户可能会中断,所以我们需要用exprotfs -r 命令来刷新文件
可以看到,配置权限已经生效了,这个时候再来创建文件试试看
可以看到新建的文件属主还是root
那么如何将所有客户端新建文件都指定一个用户呢,需要设置anonuid和anongid权限
指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用
首先在服务端上新建一个用户并指定uid号
修改配置文件,并刷新使其生效
这个时候我们再去创建文件
我们在服务端查看就可以发现,文件属主就是指定的用户
准备三台机器
NFS服务端 | 192.168.83.30 |
NFS客户端 | 192.168.83.40 |
NFS客户端 | 192.168.83.20 |
开始实验之前,还是确定防火墙和核心防护是否关闭,如果没有关闭需要手动关闭
添加一些内容供客户端读取
在这里注意修改文件夹权限:chmod 777 /data
配置完后刷新一下配置文件
在另外两台机器上下载并开启httpd服务
这个时候再去访问这两个网址就会得到相同的NFS服务器上的信息