目录
引言
今天闲来无事总结一下在 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 配置文件来实现开机自动挂载。