Linux服务篇之YUM仓库及NFS共享服务

1 yum 仓库

  • yum是一个基于 RPM 包构建的软件更新机制,可以自动解决依赖关系,所有软件包由集中的 YUM 软件仓库提供
  • 要成功使用 YUM 机制来更新系统和软件,需要有一个包含各种 rpm 安装包文件及其依 赖软件的软件仓库(repository),提供软件仓库的服务器也称为 “源” 服务器。在客户机中只要正确指定软件仓库的地址等信息,就可以通过对应的 “源” 服务器来安装或更新软件
  • yum由仓库和客户端组成,也就是整个 yum 由两部分组成,所以 yum 可以存放在两台服务器上。也可以存放在一台服务器上。可以有官方来提供服务,也可以由第三方来提供,比如国内的阿里云,搜狐云,还有一些非盈利组织比如学校等。官方的源一般在国外,下载速度肯定有限,手动更改成国内的云可以大幅提升下载速度

1.1 yum 实现过程

先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当 yum 客户端利用 yum/dnf 工具进行安装时包时,会自动下载 repodata 中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装

yum依赖于环境,依赖于服务端和客户端,允许跨网络

客户端:配置文件
服务端

  • RPM 包(存放在包文件夹 Packages 中)
  • 元数据(存放在元数据文件夹 repodata 中,其中包含:目录(软件的目录),软件的依赖关系,软件的分组)

最终形成两个文件夹 Packages (包文件夹一般取名 packages )和 repodata (元数据文件夹)

仓库类型
光盘的仓库(基本仓库)
epel 扩展仓库

在这里插入图片描述

2 yum 配置文件

2.1 yum主配置文件

位置:/etc/yum.conf

[root@localhost]# /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever //yum下载的RPM包的缓存目录 $basearch代表硬件 $releasever系统版本比如7
keepcache=0                         //是否保存缓存  0代表不保存,1代表保存
debuglevel=2                        //调试级别了解即可
logfile=/var/log/yum.log		   // 日志文件位置
exactarch=1				      //是否允许不同版本的rpm安装
obsoletes=1			        //update 的一个参数是否可以允许旧版本的运行	
gpgcheck=1                    //验证秘钥
plugins=1                  //是否允许插件1代表可以
installonly_limit=5            //保存几个内核 5代表5个


yum的repo配置文件中可用的变量:  
$releasever: 当前OS的发行版的主版本号,如:8,7,6  
$arch: CPU架构,如:aarch64, i586, i686,x86_64等  
$basearch:系统基础平台;i386, x86_64  $contentdir:表示目录,比如:centos-8,centos-7  $YUM0-$YUM9:自定义变量

在这里插入图片描述

2.2 仓库设置文件

位置:/etc/yum.repos.d/*.repo

#下面是默认仓库,是centos官方的yum源,需要联网才可以使用
[root@localhost yum.repos.d]# ls /etc/yum.repos.d/
bak               CentOS-Debuginfo.repo  CentOS-Sources.repo
CentOS-Base.repo  CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo    CentOS-Media.repo

2.3 日志文件

位置:/var/log/yum.log

[root@localhost yum.repos.d]# cat /var/log/yum.log   //查看日志文件

3 yum命令详解

3.1 查询软件包命令

[root@localhost ~]# yum list //查询软件包列表
[root@localhost ~]# yum list installed //查询系统中已安装的软件包
[root@localhost ~]# yum list available //查询仓库中尚未安装的软件包
[root@localhost ~]# yum list updates //查询可以升级版本的软件包
 
[root@localhost ~]# yum info [软件名] //查询软件包的描述信息
 
#根据关键字查找软件安装包,相当于你只知道这个包里的某个关键字会全部给你匹配出来
[root@localhost ~]# yum search  <关键词>
 
#你知道某个命令却不知道具体的包可以用此命令查找
[root@localhost ~]# yum whatprovides  <关键词>

在这里插入图片描述
在这里插入图片描述

3.2 查询软件包组命令

#安装包组的查询 不加包组名 就是显示所有
[root@localhost ~]#yum grouplist  [包组名]
 
#不加包组名显示全部
[root@localhost ~]# yum groupinfo  <包组名>

3.3 yum 安装升级

[root@localhost ~]# yum -y install 软件名   //安装、升级软件包,"-y"选项表示自动确认
[root@localhost ~]# yum -y update 软件名   //升级软件包
 
[root@localhost ~]# yum groupinstall gnome desktop  //安装包组名
 
#更新安装包,可以单个也可以全部 后面加具体名称就是单个更新,不加就是全部更新。
但是首先你要有更新的包组库否则也无法更新。
[root@localhost yum.repos.d]# yum upgrade 
[root@localhost yum.repos.d]# yum groupupdate    //组包更新

3.4 软件卸载

[root@localhost ~]# yum -y remove 软件名    //卸载软件包,可自动解决其依赖关系
 
#查看历史的使用记录,选择ID 1,2,3,4,5,可以使用yum history undo 4 进行卸载,这样对比remove好处是可以将所有的依赖都删除
[root@localhost yum.repos.d]# yum history 
[root@localhost .ssh]#  yum history undo 3 //3代表id号
 
#如果后悔卸载可以使用两种方式
yum history redo 4 (重新安装一遍)
yum history undo 6 (反悔卸载等于重新安装一遍)

4 yum 源的提供方式

4.1 配置本地源仓库

[root@localhost yum.repos.d]# mount /dev/sr0 /mnt #把光盘挂载到/mnt目录下(前提虚拟机是光盘挂载)

[root@localhost ~]# cd /etc/yum.repos.d/    //进入etc目录下的yum.repos.d
[root@localhost yum.repos.d]# mkdir bak   //创建bak文件夹
[root@localhost yum.repos.d]# mv *.repo bak/   //将yum.repos.d下的所有以.repo结尾移动至bak目录下
[root@localhost yum.repos.d]# ls    //查看yum.repos.d的文件

#新建yum仓库文件
[root@localhost yum.repos.d]# vim local.repo
[local]   //仓库类别
name=local   //仓库名称
baseurl=file:///mnt    //指定URL 访问路径为光盘挂载目录
enabled=1   //开启此yum源,此为默认项,可省略
gpgcheck=0    //不验证软件包的签名

[root@localhost yum.repos.d]# yum clean all && yum makecache  //清理yum缓存并更新
[root@localhost yum.repos.d]# yum repolist  //检查

在这里插入图片描述

4.2 搭建阿里云仓库 (http方式外网环境)

#切换到 yum.repo.d 目录将自带的仓库移走
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv *.repo bak/   //将原有的仓库移至 bak 文件夹下
[root@localhost yum.repos.d]# ls

#新建yum仓库
[ali]      //阿里云centos yum仓库
name=aliyun
#baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/                  //开启哪个都可以正常使用,这边主要解释变量的作用
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/    //变量参见主配置文件
gpgcheck=0
 
[epel]                //epel源仓库                                          
name=epel  
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
gpgcheck=0
 
[update]           //更新包仓库                                                   
name=update
baseurl=https://mirrors.aliyun.com/centos/7/updates/x86_64/
gpgcheck=0

[root@localhost yum.repos.d]# yum clean all && yum makecache  //清理yum缓存并更新

在这里插入图片描述
小火车

[root@localhost yum.repos.d]# yum install -y epel-release
[root@localhost yum.repos.d]# yum install -y sl
[root@localhost yum.repos.d]# sl -a

在这里插入图片描述
在这里插入图片描述

[root@localhost yum.repos.d]# yum install -y install cowsay
[root@localhost yum.repos.d]# cowsay hello

在这里插入图片描述

4.2.1 网络源

CentOS系统的yum源
#阿里云
https://mirrors.aliyun.com/centos/$releasever/ 
#腾讯云
https://mirrors.cloud.tencent.com/centos/$releasever/ 
#华为云
https://repo.huaweicloud.com/centos/$releasever/ 
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/

EPEL的yum源
epel是额外源,有的软件镜像文件里没有,需要增加额外源
先检测本地的源,本地源没有去额外源
#阿里云
https://mirrors.aliyun.com/epel/$releasever/x86_64
#腾讯云
https://mirrors.cloud.tencent.com/epel/$releasever/x86_64
#华为云
https://mirrors.huaweicloud.com/epel/$releasever/x86_64
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64

#更新源
http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ 
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/ 
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/

4.3 内网环境下 http 方式搭建yum仓库

由于是内网环境,虚拟机全部设为仅主机模式,(如何设置仅主机模式可参考 DHCP 原理与配置)无法连接外部网络如果想要下载 httpd 服务则需要搭建一个本地 yum 仓库

服务端配置

#搭建本地 yum 仓库并下载 httpd 服务
[root@localhost ~]# cd /mnt/              //进入mnt        
[root@localhost mnt]# ls                 //查看mnt下的文件
[root@localhost mnt]# mount /dev/sr0 /mnt        //挂载到mnt目录下

[root@localhost mnt]# cd /etc/yum.repos.d/     //进入etc目录下的yum.repos.d
[root@localhost yum.repos.d]# mkdir bak         //创建bak文件夹
[root@localhost yum.repos.d]# mv *.repo bak/    //将yum.repos.d下的所有以.repo结尾移动至bak目录下
[root@localhost yum.repos.d]# ls        //查看yum.repos.d的文件
[root@localhost yum.repos.d]# vim local.repo      //新建并编辑local.repo[local]             //仓库类别                                                               
name=local          //仓库名称
baseurl=file:///mnt      //设置链接地址,指定URL 访问路径为光盘挂载目录
gpgcheck=0           //不验证软件包的签名
enabled=1             //开机自启,开启此yum源,此为默认项,可省略
  
[root@localhost yum.repos.d]# yum clean all && yum makecache //清理缓存建立元数据
[root@localhost yum.repos.d]# yum -y install httpd    //安装http服务

在这里插入图片描述
在这里插入图片描述

#服务端进入/var/www/html/添加挂载目centos7,
#将光驱挂载到centos7目录下(也可以将光驱内的所有文件包复制到centos目录下)
[root@localhost yum.repos.d]# cd /var/www/html/
[root@localhost html]# mkdir centos7
[root@localhost html]# ls
[root@localhost html]# mount /dev/sr0 /var/www/html/centos7/
[root@localhost html]# ls centos7/

#服务端关闭防火墙,开启http服务
[root@localhost html]# systemctl stop firewalld.service 
[root@localhost html]# setenforce 0
[root@localhost html]# systemctl start httpd.service 

在这里插入图片描述
httpd 提供网页服务,所以在客户端搜索服务器IP地址+共享目录(192.168.16.16/centos7)可以查看到共享出去的文件夹 centos7
在这里插入图片描述
客户端配置

客户端设为仅主机模式(如何设置仅主机模式可参考DHCP原理与配置)
[root@localhost ~]# cd /etc/yum.repos.d/        //进入etc目录下的yum.repos.d
[root@localhost yum.repos.d]# mkdir bak       //创建bak文件夹
[root@localhost yum.repos.d]# mv *.repo bak/      //将yum.repos.d下的所有以.repo结尾移动至bak目录下
[root@localhost yum.repos.d]# ls    //查看yum.repos.d的文件
[root@localhost yum.repos.d]# vim http.repo       //新建并编辑http.repo[http]       //仓库类别                                                                      
name=http   //仓库名称
baseurl=http://192.168.16.16/centos7  //指定设备服务器地址192.168.16.16为服务器地址
gpgcheck=0 //进入不需验证
enabled=1             //开机自启,开启此yum源,此为默认项,可省略

[root@localhost yum.repos.d]# yum clean all && yum makecache //清理缓存建立元数据
[root@localhost html]# systemctl stop firewalld.service 
[root@localhost html]# setenforce 0

在这里插入图片描述
测试安装一个服务
在这里插入图片描述

4.4 内网环境下 ftp 方式搭建 yum 仓库

ftp 可以使用内网也可以使用外网,此处演示内网环境, 由于是内网环境,虚拟机全部设为仅主机模式,(如何设置仅主机模式可参考 DHCP 原理与配置)无法连接外部网络如果想要下载 ftp 服务则需要搭建一个本地 yum 仓库
服务端:192.168.16.16
客户端:192.168.16.18

服务端配置

#搭建本地 yum 仓库并下载 vsftpd 服务
[root@localhost ~]# cd /mnt/              //进入mnt        
[root@localhost mnt]# ls                 //查看mnt下的文件
[root@localhost mnt]# mount /dev/sr0 /mnt        //挂载到mnt目录下

[root@localhost mnt]# cd /etc/yum.repos.d/     //进入etc目录下的yum.repos.d
[root@localhost yum.repos.d]# mkdir bak         //创建bak文件夹
[root@localhost yum.repos.d]# mv *.repo bak/    //将yum.repos.d下的所有以.repo结尾移动至bak目录下
[root@localhost yum.repos.d]# ls        //查看yum.repos.d的文件
[root@localhost yum.repos.d]# vim local.repo      //新建并编辑local.repo
[local]             //仓库类别                                                               
name=local          //仓库名称
baseurl=file:///mnt      //设置链接地址,指定URL 访问路径为光盘挂载目录
gpgcheck=0           //不验证软件包的签名
enabled=1             //开机自启,开启此yum源,此为默认项,可省略

[root@localhost yum.repos.d]# yum clean all && yum makecache //清理缓存建立元数据
[root@localhost ~]# yum install vsftpd -y    //安装vsftpd服务

在这里插入图片描述
在这里插入图片描述

#服务端进入 /var/ftp/ 目录下添加一个挂载目录
#centos7将光驱挂载到centos7目录下
[root@localhost ~]# cd /var/ftp/    //进入var/ftp目录
[root@localhost ftp]# ls
[root@localhost ftp]# mkdir centos7   //新建挂载目录centos7
[root@localhost ftp]# ls
[root@localhost ftp]# umount /mnt/  //如果之前挂载了,要将原先本地仓库挂载到mnt目录下的镜像解挂
[root@localhost ftp]# mount /dev/sr0 /var/ftp/centos7/   //将镜像挂载到ftp目录下的centos7文件
[root@localhost ftp]# df -h
[root@localhost ftp]# ls centos7/

#服务端关闭防火墙和selinux,开启vsftpd服务
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

在这里插入图片描述
客户端配置
由于客户端也是仅主机模式 此处也要搭建本地 yum,可以参照前面搭建 http 仓库步骤,搭建好本地 yum 后下载 ftp 命令

客户端下载ftp
在这里插入图片描述
客户端测试 ftp 服务是否正常
在这里插入图片描述
客户端搭建 yum 仓库

[root@localhost ~]# cd /etc/yum.repos.d/    //进入etc目录下的yum.repos.d
[root@localhost yum.repos.d]# mkdir bak     //创建bak文件夹
[root@localhost yum.repos.d]# mv *.repo bak/        //将yum.repos.d下的所有以.repo结尾移动至bak目录下
[root@localhost yum.repos.d]# ls      //查看yum.repos.d的文件
bak
[root@localhost yum.repos.d]# vim ftp.repo//新建并编辑ftp.repo[ftp]         
name=ftp   //仓库名
baseurl=ftp://192.168.16.16/centos7  //指定设备服务器地址  指向服务端IP地址
gpgcheck=0             //进入不需验证
enabled=1
 
[root@localhost yum.repos.d]# yum clean all && yum makecache //清理缓存建立元数据

在这里插入图片描述
测试:安装一个服务
在这里插入图片描述

5 网络文件服务—NFS共享

NFS(Network File System网络文件服务)是一种基于 TCP/IP 传输的网络文件系统协议,最初由Sun公司开发。通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。NFS 也是 NAS 存储设备必然支持的一种协议

NAS 存储:NFS 服务的实现依赖于 RPC ( Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在 Centos 7系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NES 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。
手动加载NFS共享服务时,应该先启动 rpcbind,再启动 NFS。
NFS 端口号:TCP 2049,RPC 端口号:TCP 111

5.1 NFS 特点

  • 采用 TCP/IP 传输网络文件
  • 安全性低
  • 简单易操作
  • 适合局域网环境

5.2 NFS 原理

在这里插入图片描述

5.3 实验步骤

  • 安装 nfs 和 rpcbind 软件
  • 修改配置文件设置共享创建共享目录
  • 开启服务
  • 客户端验证共享目录可访问

5.3.1 具体配置

服务端:192.168.16.16

[root@localhost ~]# systemctl stop firewalld  //关闭防火墙
[root@localhost ~]# setenforce 0

[root@localhost ~]# rpm -q rpcbind nfs-utils   //查看软件包 
[root@localhost ~]# yum install -y nfs-utils rpcbind  //安装nfs-utils与rpcbind软件包

[root@localhost ~]# vim /etc/exports   //配置文件 NFS
/opt/share 192.168.16.18/24 (rw,sync,no_root_squash) 网段

格式:共享目录(绝对路径)  客户机地址 (权限)
如    /share  *  允许所有主机访问share目录 (权限)
客户机地址可以是主机名、IP 地址、网段地址,也可以是*

rw:表示允许读写
ro:表示为只读
sync:表示同步写入到内存与硬盘中
no_root_squash:表示用户以root身份访问时赋予本地root权限
如果不加,那么客户端无法在里面编辑或写入文件,默认 nfsnobody
root-squash:表示客户机用 root 用户访问该共享目录时,将 root 用户映射成匿名用户
all_squash:所有访问用户都映射为匿名户或用户组(将root用户匿名)
async:将数据先保存在内存缓冲区中,必要时才写入磁盘,速度快但会丢失数据
subtree_check(默认):若输出目录是一个子目录,则 nfs 服务器将检查其父目录的权限(检查子目录的父目录权限)
no_subtree_check:即使输出目录是一个子目录,nfs 服务器也不检查其父目录的权限,这样可以提高效率

在这里插入图片描述
创建 share 目录

[root@localhost ~]# mkdir -p /opt/share
[root@localhost ~]# ls /opt
[root@localhost ~]# systemctl start rpcbind   //需要先启动 rpc 服务,因为 nfs 要向 rpc 注册端口
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl enable rpcbind  //开机自启
[root@localhost ~]# systemctl enabled nfs

[root@localhost ~]# netstat -anpu | grep rpc   //查看端口
[root@localhost ~]# netstat -anou | gerp nfs

[root@localhost ~]# rpcinfo -p localhost  //查看 nfs 向 rpc 注册的端口信息
[root@localhost ~]# exportfs -v   //-v显示当前的配置
[root@localhost ~]# exportfs -r   //重新加载服务配置
[root@localhost ~]# showmount -e localhost    //不加ip地址是本机地址 192.168.16.16 加ip地址是验证共享

在这里插入图片描述
客户端:192.168.16.18

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

[root@localhost ~]# yum install -y nfs-utils rpcbind
[root@localhost ~]# showmount -e 192.168.16.16 (服务器地址)//客户端验证共享
[root@localhost ~]# yum -y install httpd

[root@localhost ~]# mount -t nfs 192.168.16.16:/opt/share /var/www/html  //将共享目录挂载到网页目录
[root@localhost ~]# df -h
[root@localhost ~]# systemctl start httpd    //启动 httpd 服务
[root@localhost ~]# curl 127.0.0.1   //本机,成功访问主页内容
浏览器访问 192.168.16.18 客户端本地IP地址

在这里插入图片描述
在这里插入图片描述
测试是否能文件共享

  • 服务端
    在这里插入图片描述
  • 客户端
    在这里插入图片描述
    永久性挂载
[root@localhost ~]# vim /etc/fstab
192.168.16.16:/opt/share /var/www.html nfs defaults,_netdev(网络设备) 0 0
注意:NFS 客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端 NFS 服务突然间停掉了,那么在客户端就会出现执行 df -h 命令卡死的现象。这个时候使用 umount 命令是无法直接卸载的,需要加上 -lf 才能卸载
-l 表示解除正在繁忙的文件系统,-f 表示强制。

[root@localhost ~]# systemctl stop nfs   //服务器端模拟 nfs 挂掉
[root@localhost ~]# umount /var/www.html   //客户端卸载时会卡住
[root@localhost ~]# umount -lf /var/www.html   //加lf参数成功卸载

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值