Linux—部署yum仓库与NFS服务


引言

今天闲来无事总结一下在 CentOS 7系统中构建并使用软件仓库,实现基于网络的软件包安装、更新、卸载的规范化管理,以及在局域网内部部署 NFS 共享服务器的方法。


一、YUM 仓库服务

1. YUM介绍

  • YUM 的前身是 YUP (Yellow dog Ulpdater,Yellow dog Linux 的软件更新器),最初由 TSS 公司使用 python 语言开发而成,后来由杜克大学的 Linux 开发队伍进行改进,命名为YUM (Yellow dog UpdaterModified)。

  • 借助 YUM 软件仓库,可以完成安装、卸载、自动升级 rpm 软件包等任务,能够自动查找并解决rpm包之间的依赖关系,而无须管理员逐个、手工地去安装每个 rpm 包,使管理员在维护大量 Linux 服务器时更加轻松自如。特别是在拥有大量 Linux 主机的本地网络中,构建一台"源"服务器可以大大缓解软件安装、升级等对 Internet 的依赖。

2. YUM 源的提供方式

2.1 配置本地源

[root@localhost ~]$mount /dev/sr0 /mnt/       #把光盘挂载到目录下
[root@localhost ~]$df -h                      #查看挂载
[root@localhost ~]$cd /etc/yum.repos.d/       #本地源所有的源都在这个目录下
[root@localhost /etc/yum.repos.d]$mkdir repos.bak  #创建目录
[root@localhost /etc/yum.repos.d]$mv*.repo repos.bak
[root@localhost /etc/yum.repos.d]$vim local.repo 
设置仓库配置信息
[local]                                       #仓库类别
name=local                                    #仓库名称
baseurl=file:///mnt                           #指定URL访问路径为光盘挂载目录    
enabled=1                                     #开启yum源
gpgcheck=0                                    #不验证软件包的签名

[root@localhost /etc/yum.repos.d]$yum clean all && yum makecache  删除yum缓存并更新
[root@localhost /etc/yum.repos.d]$yum repolist

2.2 配置ftp源

  • 服务器配置
[root@localhost ~]#yum -y install vsftpd    #安装vsftpd服务端软件
[root@localhost ~]#mkdir /var/ftp/centos7   #创建挂盘挂载目录
[root@localhost ~]#mount /dev/sr0 /mnt      #镜像挂载
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]#df -h
[root@localhost ~]#cp -rf /mnt/* /var/ftp/centos7/  &   ## 创建目录repodata 数据文件
[1] 2646
[root@localhost ~]#mkdir /var/ftp/other
[1]+  完成                  cp -i -rf /mnt/* /var/ftp/centos7/
[root@localhost /mnt/repodata]#cd /var/ftp/other/
[root@localhost /var/ftp/other]#createrepo -g /mnt/repodata/repomd.xml ./  #工具建立仓库数据文件
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@localhost /var/ftp/other]#systemctl is-enabled vsftpd               #查看开机自启状态
disabled
[root@localhost /var/ftp/other]#systemctl enable vsftpd                   #设置开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@localhost /var/ftp/other]#systemctl is-enabled vsftpd
enabled
[root@localhost /var/ftp/other]#systemctl start vsftpd                    #开启服务

  • 客户端配置
[root@localhost /]#yum install ftp -y
[root@localhost /]#cd /etc/yum.repos.d/
[root@localhost /etc/yum.repos.d]#ls
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo         CentOS-Media.repo      local.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo    repos.bak
[root@localhost /etc/yum.repos.d]#mkdir repos.bak/
[root@localhost /etc/yum.repos.d]#mv CentOS-* repos.bak/
[root@localhost /etc/yum.repos.d]#ls
local.repo  repos.bak
[root@localhost /etc/yum.repos.d]#vim ftp repos.bak/
[ftp]                                             #仓库类别
name=ftp                                          #仓库名称(说明)
baseurl=ftp://192.168.8.128/cetnos7               #URL 访问路径 
enabled=1                                         #启用此软件仓库
gpgcheck=0                                        #验证软件包的签名


[other]
name=ftp
baseurl=ftp://192.168.8.128/other
enabled=1                                
gpgcheck=0  

wq保存退出
[root@localhost /etc/yum.repos.d]#yum clean all
[root@localhost /etc/yum.repos.d]#yum makecache
[root@localhost /etc/yum.repos.d]#yum list 

2.3 配置网络源

网络源有清华源、163yum源、阿里云源等等,这里就用阿里云 yum 源做演示。

  • 把在线 yum 源配置文件下载到本地
[root@localhost ~]#cd /etc/yum.repos.d/
[root@localhost ~]#mkdir repos.bak
[root@localhost ~]#mv CentOS-* repos.bak
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
--2021-08-31 20:55:40--  https://mirrors.aliyun.com/repo/Centos-7.repo
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 58.216.14.240, 58.216.13.243, 58.216.14.241, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|58.216.14.240|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2523 (2.5K) [application/octet-stream]
正在保存至:/etc/yum.repos.d/CentOS-Base.repo”

100%[=====================================================>] 2,523       --.-K/s 用时 0s      

2021-08-31 20:55:40 (1.57 GB/s) - 已保存 “/etc/yum.repos.d/CentOS-Base.repo” [2523/2523])
[root@localhost /etc/yum.repos.d]#yum clean all && yum makecache             #清理yum缓存并且生成新的缓存
[root@localhost /etc/yum.repos.d]#yum repolist              				 #检查yum仓库是否建立

3. 使用 yum 工具管理软件包

在CentOS 7服务器中,yum 工具是最常用的 YUM 客户端工具。

3.1 查询软件包

  • yum list
[root@localhost ~]#yum list                     #查询软件包列表

[root@localhost ~]#yum list installed           #只列出系统中已安装的软件包

[root@localhost ~]#yum list available           #只列出软件仓库中可用(尚未安装)的软件包

[root@localhost ~]#yum list updates             #只列出可以升级版本的软件包
  • yum info——查询软件包的详细信息
[root@localhost ~]#yum info httpd    
  • yum search——查询指定的软件包
[root@localhost ~]#yum search all httpd
  • yum whatprovides——查询命令属于哪个软件包
[root@localhost ~]#yum whatprovides netstat

3.2 安装、升级、卸载软件包

  • 使用 yum 工具安装、升级软件包,分别通过子命令 install、update 来完成,操作对象为指定的软件包名(可以有多个)。
  • 执行操作时会自动检查并解决软件包之间的依赖关系,用“-y”选项可以强制安装。
[root@localhost ~]#yum install -y net-snmp
  • 通过子命令 remove 可以完成卸载软件包
[root@localhost ~]#yum remove -y net-snmp
已加载插件:fastestmirror, langpacks
正在解决依赖关系
--> 正在检查事务
---> 软件包 net-snmp.x86_64.1.5.7.2-49.el7_9.1 将被 删除
--> 解决依赖关系完成

依赖关系解决

===============================================================================================
 Package             架构              版本                          源                   大小
===============================================================================================
正在删除:
 net-snmp            x86_64            1:5.7.2-49.el7_9.1            @updates            850 k

事务概要
===============================================================================================
移除  1 软件包

安装大小:850 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在删除    : 1:net-snmp-5.7.2-49.el7_9.1.x86_64                                         1/1 
  验证中      : 1:net-snmp-5.7.2-49.el7_9.1.x86_64                                         1/1 

删除:
  net-snmp.x86_64 1:5.7.2-49.el7_9.1                                                           

完毕!

二、NFS 共享存储服务

1.NFS概述

  • NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 sun 公司开发。通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程 NFS 服务器中的共享资源。

  • NFS 也是 NAS 存储设备必然支持的一种协议,但是因为没有用户认证机制,而且数据在网络上明文传输,安全性很差,所以一般只能在局域网中使用。

2.安装 nfs-utils、rpcbind 软件包

  • NFS 服务的实现依赖于 RPC (Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在Centos 7系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfso
  • nfs端口号2049;RPC端口号111
[root@localhost ~]#yum install nfs-utils.x86_64 rpcbind.x86_64 -y
[root@localhost ~]#systemctl enable nfs
[root@localhost ~]#systemctl enable rpcbind

3.设置共享目录

  • NFS 的配置文件为 /etc/exports ,文件内容默认为空(无任何共享)。
  • 在exports 文件中设置共享资源时,记录格式为“目录位置 客户机地址(权限选项)”。

例如,将文件夹 /opt/www 共享给 192.168.8.0/24网段使用,允许读写操作,配置如下

 [root@localhost ~]#mkdir -p /opt/www
 [root@localhost ~]#vim /etc/exports
 /opt/www     192.168.8.0/24(rw,sync,no_root_squash)

其中客户机地址可以是主机名 ID 地址、网段地址,允许使用 “*” “?” 通配符;权限选项中的 rw 表示允许读写(ro为只读),sync表示同步写入,no_root_squash表示当客户机以 root 身份访问时赋予本地 root 权限(默认是root_squash,将为 nfsnobody 用户降权对待)。

  • 当需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格隔指定多个“客户机(权限选项)”即可。
    例如,以下操作将 /var/ftp/public 目录共享给两个客户机,并分别给予只读、读写权限。
[root@localhost ~]# vim /etc/exports
/var/ftp/pub 192.168.8.10(ro) 192.168.8.20(rw)

4.启动 NFS 程序

[root@localhost ~]#systemctl start rpcbind      #需要先启动rpc服务,因为nfs要向rpc注册端口
[root@localhost ~]#systemctl start nfs
[root@localhost ~]#systemctl enable rpcbindsystemctl enable nfs
[root@localhost ~]#systemctl start nfs
[root@localhost ~]#netstat -anup |grep rpc      #查看端口
udp        0      0 0.0.0.0:926             0.0.0.0:*                           6687/rpcbind        
udp        0      0 127.0.0.1:966           0.0.0.0:*                           6726/rpc.statd      
udp        0      0 0.0.0.0:35843           0.0.0.0:*                           6726/rpc.statd      
udp        0      0 0.0.0.0:20048           0.0.0.0:*                           6728/rpc.mountd  
......

 [root@localhost ~]#rpcinfo -p localhost       #注册端口信息
  
[root@localhost ~]#showmount -e                 #查看本机发布的NFS共享目录

5.客户机中访问 NFS 共享资源

  • NFS 协议的目标是提供一种网络文件系统,因此对 NFS 共享的访问也使用 mount 命令来进行挂载,对应的文件系统类型为 nfs 。
  • 可以手动挂载,也可以加入 fstab 配置文件来实现开机自动挂载。

5.1 手动挂载 NFS 共享目录

以 root 用户身份执行 mount 操作,将 NFS 服务器共享的 /opt/wwwroot 目录挂载到本地目录 /var/www/html 。与挂载本地文件系统不同的是,设备位置处应指出服务器地址。

[root@localhost~]# mount 192.168.8.129:/opt/wwwroot /var/www/html
[root@localhost~]# tail -l /etc/mtab       #确认挂载结果

5.2 fstab 自动挂载设置

修改 /etc/fstab 配置文件,加入 NFS 共享目录的挂载设置(文件系统类型为nfs)。挂载参数建议添加_netdev(设备需要网络);若添加 soft、intr 参数可以实现软挂载,允许在网络中断时放弃挂载。这样客户机就可以在每次开机后自动挂载 NFS 共享资源了。

vim /etc/fstab
......
192.168.8.129:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0

5.3 强制卸载 NFS

  • NFS客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端 NFS 服务突然间停掉了,那么在客户端就会出现执行 df -h 命令卡死的现象。
  • 这个时候使用 umount 命令是无法直接卸载的,需要加上-lf 选项才能卸载。
  • 当出现卡死现象时,要重新开一个终端,执行 cat /etc/rc.local 命令,查看挂载点。然后使用 umount 命令卸载,其中 -l 选项表示解除正在繁忙的文件系统,-f 选项表示强制。
[root@localhost~J# umount/mnt
umount. nfs:/mnt : device is busy
[root@localhost ~]# umount -lf /mnt

总结

  • YUM 软件仓库主要通过 HTTP 或 FTP 方式进行发布,且需要提供 repodata 数据,其中包含所有 rpm 包文件的头信息。
  • NFS 服务的实现依赖于 RPC 机制, RPC 充当 NFS 客户端和 NFS 服务器的中介。
  • 对 NFS 共享的访问使用 mount 命令来进行挂载,对应的文件系统类型为 nfs。既可以手动挂载,也可以加入 fstab 配置文件来实现开机自动挂载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

头发莫的了呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值