当前位置: 首页 > news >正文

yum仓库及NFS共享

目录

一、yum仓库

(一)yum仓库简介

(二)实现过程

(三)yum命令

(四)搭建内网yum仓库

1.FTP服务搭建yum仓库

①服务端操作

②客户端操作

2.http服务搭建yum仓库

①服务端操作

②客户端操作

二、NFS文件共享

(一)NFS基本信息

(二)实验操作

1.创建共享目录

2.启动服务

3.配置NFS客户端

4.使用权限

(三)搭建一台NFS共享服务器

1.服务端开启NFS服务

2.创建共享文件

3.挂载使用


一、yum仓库

(一)yum仓库简介

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命令

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加入序号重新执行序号里的操作

(四)搭建内网yum仓库

服务端192.168.83.30
客户端    192.168.83.40                    

检查两台机器防火墙与核心防护是否关闭,如果没有关闭执行systemctl  stop  firewalld   与setenforce  0 命令

1.FTP服务搭建yum仓库

①服务端操作

下载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  验证一下

2.http服务搭建yum仓库

①服务端操作

下载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

下载软件验证一下  

二、NFS文件共享

早期网络想要在不同主机之间共享文件大多要用 FTP 协议来传输,但FTP 协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了NFS 开源文件共享程序:NFSINetworkFile Svstem)是一个能够将多台Linux 的远程主机数据挂载到本地目录的服务,属于轻量级的文件共享服务,不支持Linux与 Windows 系统间的文件共享

(一)NFS基本信息

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服务的工具是默认安装了的

1.创建共享目录

先创建连个文件夹,在输入一些内容供NFS客户端读取

修改配置文件,定义要共享的目录及相应权限

这个配置文件位置在/etc/exports

配置内容格式为:共享目录    可以访问的主机地址(权限)

权限分类有以下几种

参数作用
ro只读模式(默认)
rw读写模式
root_squash当NFS 客户端使用 root 用户访问时,映射为 NFS 服务端的匿名用户
no_root_squash当NFS客户端使用 root 用户访问时,映射为NFS 服务端的 root 用户
all_squash不论 NFS 客户端使用任何帐户,均映射为 NFS 服务端的匿名用户
sync同时将数据写入到内存与硬盘中,保证不丢失数据。
async优先将数据保存到内存,然后再写入硬盘,效率更高,但可能造成数据丢失

下面我们来编辑配置文件,添加以下内容

2.启动服务

配置好文件后启动服务和配置文件

3.配置NFS客户端

客户端如果也是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地址:/共享文件名       #挂在点       #文件类型      #权限         #没网不加载   #不备份  #不检查

4.使用权限

此时,我们是有读写权限的

但是,我们创建文件的时候为什么还会显示失败呢?

那是因为对/data文件目录还没有权限。之前在介绍FTP服务的时候说过,我们的服务已经添加了相应的权相,但是对文件本身还没有权限,虽然我们是在客户端的root用户,但是,我们现在访问的是服务端的文件夹,root用户的超级管理员身份在服务端并没有效果,所以,还需要修改一下服务端的文件的权限

现在再去客户端创建文件就可以了

我们又发现,创建的文件属主和属组是一个陌生的用户nfsnobody,这就是之前说的

root_squash权限:当NFS 客户端使用 root 用户访问时,映射为 NFS 服务端的匿名用户

细心的人,在启动服务的时候就会发现后面有一排的权限

如何创建文件属主为root用户呢?很简单,修改一下权限就可以了

保存退出后需要重新加载一下配置文件,如果直接重启服务的话,正在操作的用户可能会中断,所以我们需要用exprotfs  -r  命令来刷新文件

可以看到,配置权限已经生效了,这个时候再来创建文件试试看

可以看到新建的文件属主还是root

那么如何将所有客户端新建文件都指定一个用户呢,需要设置anonuid和anongid权限

指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用

首先在服务端上新建一个用户并指定uid号

修改配置文件,并刷新使其生效

这个时候我们再去创建文件

我们在服务端查看就可以发现,文件属主就是指定的用户

(三)搭建一台NFS共享服务器

准备三台机器

NFS服务端192.168.83.30
NFS客户端192.168.83.40
NFS客户端192.168.83.20

开始实验之前,还是确定防火墙和核心防护是否关闭,如果没有关闭需要手动关闭

1.服务端开启NFS服务

2.创建共享文件

先创建一个共享文件夹,再去写配置文件

添加一些内容供客户端读取

在这里注意修改文件夹权限:chmod   777  /data

配置完后刷新一下配置文件

在另外两台机器上下载并开启httpd服务

3.挂载使用

这个时候再去访问这两个网址就会得到相同的NFS服务器上的信息

相关文章:

  • openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_keygen.c
  • 网页设计(十一)JavaScript事件分析
  • windows编译TensorFlowServing
  • 东北编程语言???
  • 代码随想录算法训练营29期|day 22 任务以及具体安排
  • 蓝桥杯C组-填充-贪心
  • 电路原理1-线性电阻
  • 一台电脑如何通过另一台联网电脑访问网络
  • css less sass 动态宽高
  • CNC数控机床通过工业智能网关实现远程运维
  • 讲解机器学习中的 K-均值聚类算法及其优缺点
  • 陶哲轩工作流之人工智能数学验证+定理发明工具LEAN4 [线性代数篇2前置知识]不同求和范围不同函数项结果相等的条件
  • 50-Js控制元素显示隐藏
  • 229.【2023年华为OD机试真题(C卷)】手机App防沉迷系统(模拟-JavaPythonC++JS实现)
  • 【征服redis5】redis的Redisson客户端
  • .pyc 想到的一些问题
  • Docker容器管理
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • HomeBrew常规使用教程
  • JavaScript设计模式之工厂模式
  • Java面向对象及其三大特征
  • JDK9: 集成 Jshell 和 Maven 项目.
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Python语法速览与机器学习开发环境搭建
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Sublime text 3 3103 注册码
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 用Python写一份独特的元宵节祝福
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • gunicorn工作原理
  • RDS-Mysql 物理备份恢复到本地数据库上
  • !$boo在php中什么意思,php前戏
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • $$$$GB2312-80区位编码表$$$$
  • (06)金属布线——为半导体注入生命的连接
  • (09)Hive——CTE 公共表达式
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (多级缓存)缓存同步
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (五)关系数据库标准语言SQL
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)Mysql的优化设置
  • (转)用.Net的File控件上传文件的解决方案
  • *** 2003
  • *上位机的定义
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .apk文件,IIS不支持下载解决
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .net中应用SQL缓存(实例使用)
  • @JoinTable会自动删除关联表的数据
  • @Not - Empty-Null-Blank