部署YUM仓库及NFS共享服务

一:部署 YUM 软件仓库

借助于 YUM 软件仓库,可以完成安装、卸载、自动升级 rpm 软件包等任务,能够自动
查找并解决 rpm 包之间的依赖关系,而无须管理员逐个、手工地去安装每个 rpm 包,使管
理员在维护大量 Linux 服务器时更加轻松自如。特别是在拥有大量 Linux 主机的本地网络中,
构建一台 服务器可以大大缓解软件安装、升级等对 Internet 的依赖。
YUM 的前身是 YUP Yellow dog Updater Yellow dog Linux 的软件更新器),最初由
TSS 公司( Terra Soft Solutions INC. )使用 Python 语言开发而成,后来由杜克大学( Duck
University )的 Linux 开发队伍进行改进,命名为 YUM Yellow dog Updater Modified )。
要成功使用 YUM 机制来更新系统和软件,需要有一个包含各种 rpm 安装包文件及其依
赖软件的软件仓库( repository ),提供软件仓库的服务器也称为 服务器。在客户机中只
要正确指定软件仓库的地址等信息,就可以通过对应的 服务器来安装或更新软件。

1:准备网络安装源(服务器端)

YUM 软件仓库通常借助于 HTTP FTP 协议来进行发布,这样可以面向网络中的所有
客户机提供软件源服务。为了便于客户机查询软件包,获取依赖关系等信息,在软件仓库中
需要提供仓库数据( repodata ),其中收集了目录下所有 rpm 包的头部信

1:准备软件仓库目录

CentOS 7 系统的安装光盘中,已针对软件目录 Packages 建立好 repodata 数据,
因此只要简单地将整个光盘中的内容通过 HTTP FTP 进行发布,就可以作为软件仓库了。
例如,可以创建 /var/ftp/centos7 目录,并确保有足够的可用空间(本例中建议大于 5GB ),
然后将 CentOS 7 光盘中的所有数据复制到该目录下。
[root@localhost ~]# mkdir -p /var/ftp/centos7
[root@localhost ~]# cp -rf /media/cdrom/* /var/ftp/centos7
对于用户搜集的非 CentOS 7 光盘自带的更多其他软件包(必须包括存在依赖关系的所
有安装文件),除了准备相应的目录之外,还需要手动创建 repodata 数据文件,这就要用到
createrepo 工具(需要从 CentOS 7 光盘中安装)。例如,若已将作为源发布的其他 rpm
装包文件存放到 /var/ftp/other 目录下,则可执行以下操作为其创建 repodata 数据。
[root@localhost ~]# mkdir /var/ftp/other
[root@localhost ~]# cd /var/ftp/other
[root@localhost other]# createrepo -g /media/cdrom/repodata/repomd.xml ./
// 以现有的 repodata 目录为样板

2:安装并启用 vsftpd 服务

[root@localhost ~]# rpm -ivh /media/cdrom/Packages/vsftpd-3.0.2-21.el7.x86_64.rpm
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# systemctl enable vsftpd
Created     symlink       from      /etc/systemd/system/multi-user.target.wants/vsftpd.service      to
/usr/lib/systemd/system/vsftpd.service.
访 问 ftp://192.168.4.254/centos7/ , 确 保 可 以 查 看 到 已 复 制 到 软 件 仓 库 目 录
/var/ftp/centos7 下的光盘数据;访问 ftp://192.168.4.254/other/ ,可以查看非 CentOS 7
盘自带的其他软件包。
[root@localhost ~]# ftp 192.168.4.254
……                                         //省略登录信息
ftp> cd centos7
250 Directory successfully changed.                
ftp> ls
……                                         //省略部分信息
226 Directory send OK.

2:配置软件仓库位置(客户端)

在客户机上需要指定至少一个可用的软件仓库,然后才能使用下一节将要介绍的 yum
工具来下载、安装软件包。 yum 工具使用的软件仓库信息存放在 /etc/yum.repos.d 目录下扩
展名为 “.repo” 的文件中。以上一小节的网络安装源为例,典型的仓库配置如下所示。
[root@localhost ~]# vi /etc/yum.repos.d/centos7.repo
[base]                                                 //仓库类别
name=CentOS 7.3                             //仓库名称(说明)
baseurl=ftp://192.168.4.254/centos7                                                 //URL 访问路径
enabled=1                                         //启用此软件仓库
gpgcheck=1                                 //验证软件包的签名
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7                 //GPG 公钥文件的位置
[other]
name=Other RPM Packages
baseurl=ftp://192.168.4.254/other
enabled=1
gpgcheck=0                                 //不验证软件包的签名
上述操作中,文件 centos7.repo 需要手动创建, /etc/yum.repos.d 目录下若有其他未用
“*.repo” 文件建议将其删除。 “enabled=1” 为默认项,可以省略; “gpgcheck” “gpgkey”
行配置用来检查软件包的完整性,若无此要求则可以省略。
作为临时解决办法之一,实际上也可以使用本地文件夹作为软件仓库。例如,将 CentOS
7 光盘挂载到 /media/cdrom 目录下以后,可以参考以下操作来进行配置。当然,这种方式
仅限于在本机使用。
[root@localhost ~]# vi /etc/yum.repos.d/local.repo
[local]
name=CentOS 7.3
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
到这里 YUM 软件仓库的配置工作就算完成了,下一节将介绍 yum 命令的使用,通过
集中提供的软件仓库来管理客户机中的软件安装。

二:使用 yum 工具管理软件包

CentOS 7 服务器中, yum 工具是最常用的 YUM 客户端工具,由默认安装的
yum-3.2.29- 40.el6.noarch 软件包提供。下面分别介绍如何使用 yum 工具来查询、安装、
升级及卸载软件包。

1:查询软件包

yum 工具的常见查询操作包括查询软件包列表、查询软件包的描述信息、查询指定的
软件包,分别可结合子命令 list info search 来实现。

1:yum list——查询软件包列表

当需要查看某个软件包的描述信息时,可以执行 “yum info 软件包名 ,其中子命令 info
表示获取信息。例如,执行以下操作可以查看软件包 httpd 的信息。
[root@localhost ~]# yum list
已加载插件: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
已安装的软件包                         //已安装的软件包列表
GConf2.x86_64                                               3.2.6-8.el7                         @anaconda
GeoIP.x86_64                                                 1.5.0-11.el7                         @anaconda
ModemManager.x86_64                                 1.6.0-2.el7                         @anaconda
ModemManager-glib.x86_64                         1.6.0-2.el7                         @anaconda
……                                         //省略部分信息
可安装的软件包                                 //可用(未安装)的软件包列表                        
389-ds-base.x86_64                       1.3.5.10-11.el7                        base                
389-ds-base-libs.x86_64                 1.3.5.10-11.el7                 base
……                                         //省略部分信息
若执行 “yum list installed” 命令,则表示只列出系统中已安装的软件包;若执行 “yum list
available” 命令,则表示只列出软件仓库中可用(尚未安装)的软件包;若执行 “yum list
updates” 命令,则表示只列出可以升级版本的软件包。

2:yum info——查询软件包的描述信息

当需要查看某个软件包的描述信息时,可以执行 “yum info 软件包名 ,其中子命令 info
表示获取信息。例如,执行以下操作可以查看软件包 httpd 的信息。
[root@localhost ~]# yum info httpd
已加载插件: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
可安装的软件包
名称           : httpd
架构           : x86_64
版本           : 2.4.6
发布           : 45.el7.centos
大小          : 2.7 M
源             : base
简介         : Apache HTTP Server
网址         : http://httpd.apache.org/
协议         : ASL 2.0
描述
                : The Apache HTTP Server is a powerful, efficient, and extensible
                : web server.

3:yum search——查询指定的软件包

当需要根据某个关键词来查找相关的软件包时,可以执行 “yum search 关键词 ,默认
仅根据软件包名称和描述信息进行搜索;若执行 “yum search all 关键词 ,可以扩大搜索范
围。例如,执行以下操作将搜索软件仓库并列出与 “httpd” 相关的软件包。
[root@localhost ~]# yum search all httpd
已加载插件: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
=============================== 匹配: httpd ================================
httpd-devel.x86_64 : Development interfaces for the Apache HTTP server
httpd-manual.noarch : Documentation for the Apache HTTP server
httpd-tools.x86_64 : Tools for use with the Apache HTTP Server
libmicrohttpd.x86_64 : Lightweight library for embedding a webserver in applications
httpd.x86_64 : Apache HTTP Server
mod_dav_svn.x86_64 : Apache httpd module for Subversion server
mod_fcgid.x86_64 : FastCGI interface module for Apache 2
mod_ssl.x86_64 : SSL/TLS module for the Apache HTTP Server

4:yum whatprovides——查询命令属于哪个软件包

在使用 Linux 操作系统过程中,经常遇到找不到某命令的现象。那这个命令需要安
装什么软件包之后才会出现呢? yum whatprovides 就可以解决这个问题的,它可以查
找某个命令属于哪个软件包。
[root@localhost ~]# yum whatprovides netstat
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.neusoft.edu.cn
* epel: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.163.com
* updates: mirrors.163.com
net-tools-2.0-0.24.20131004git.el7.x86_64 : Basic networking tools
Repo                       : @base
Matched from:
Filename                 : /usr/bin/netstat
注意:通过执行查询操作 “yum grouplist”“yum groupinfo 分组名称 可以获得 YUM
仓库中的软件分组信息。例如,执行 “yum groupinfo gnome-desktop” 命令后将列出软
件分组 gnome-desktop 所包括的软件包等信息。

2:安装、升级、卸载软件包

使用 yum 工具安装、升级软件包,分别通过子命令 install update 来完成,操作对象
为指定的软件包名(可以有多个)。执行操作时会自动检查并解决软件包之间的依赖关系,
期间会提示用户按 Y 键确认安装或升级操作,若希望自动确认,可以在 yum 命令后添加 “-y”
选项。例如,执行以下操作将从软件仓库下载并安装 net-snmp 软件包,并自动解决其依赖
关系。
[root@localhost ~]# yum -y install net-snmp
使用 yum 工具卸载软件包时,通过子命令 remove 来完成,卸载操作通过软件仓库也
可以完成。例如,执行以下操作将卸载 autofs 软件包,并自动解决其依赖关系。
[root@localhost ~]# yum -y remove autofs
注意:使用 yum 工具管理软件包时,结合子命令 groupinstall groupupdate groupremove
可以针对软件分组进行安装、升级、卸载操作。例如,若执行 “yum -y groupremove
gnome-desktop” 命令,则会删除整个 Desktop 分组所包含的软件包。

三:NFS 共享存储服务

NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。通过使用
NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负
载均衡群集来说,使用 NFS 协议来共享数据存储是比较常见的做法, NFS 也是 NAS 存储
设备必然支持的一种协议。

1:使用 NFS 发布共享资源

NFS 服务的实现依赖于 RPC Remote Process Call ,远端过程调用)机制,以完成远
程到本地的映射过程。在 CentOS 7 系统中,需要安装 nfs-utils rpcbind 软件包来提供 NFS
共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。

1:安装 nfs-utilsrpcbind 软件包

提供 RPC 支持的服务为 rpcbind ,提供 NFS 共享的服务为 nfs ,完成安装以后建议调
整这两个服务的自启动状态,以便每次开机后自动启用。手动加载 NFS 共享服务时,应该
先启动 rpcbind ,再启动 nfs
[root@localhost ~]# yum -y install nfs-utils rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind

2:设置共享目录

NFS 的配置文件为 /etc/exports ,文件内容默认为空(无任何共享)。在 exports 文件中
设置共享资源时,记录格式为 目录位置 客户机地址 ( 权限选项 )” 。例如,若要将文件夹
/opt/wwwroot 共享给 172.16.16.0/24 网段使用,允许读写操作,具体配置如下所示。
[root@localhost ~]# mkdir -p /opt/wwwroot
[root@localhost ~]# vi /etc/exports
/opt/wwwroot                 192.168.7.0/24(rw,sync,no_root_squash)
其中客户机地址可以是主机名、 IP 地址、网段地址,允许使用 * ? 通配符;权限选项
中的 rw 表示允许读写( ro 为只读), sync 表示同步写入, no_root_squash 表示当客户机以
root 身份访问时赋予本地 root 权限(默认是 root_squash ,将作为 nfsnobody 用户降权对
待)。
当需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格分隔指定
多个 客户机(权限选项) 即可。例如,以下操作将 /var/ftp/public 目录共享给两个客户机,
并分别给予只读、读写权限。
[root@localhost ~]# vi /etc/exports
/var/ftp/pub
192.168.4.11(ro) 192.168.4.110(rw)

3:启动 NFS 服务程序

[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# netstat -anpt | grep rpc
tcp         0         0 0.0.0.0:200480.0.0.0:* LISTEN 10508/rpc.mountd
tcp         0         0 0.0.0.0:527320.0.0.0:* LISTEN 10495/rpc.statd
tcp6 0
0 :::20048 :::*                         LISTEN 10508/rpc.mountd                 tcp6 0
0 :::47669 :::*                         LISTEN 10495/rpc.statd

4:查看本机发布的 NFS 共享目录

[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/opt/wwwroot 192.168.7.0/24
/var/ftp/pub 192.168.4.110,192.168.4.11

2:在客户机中访问 NFS 共享资源

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

1:安装并启动 rpcbind

若要正常访问 NFS 共享资源,客户机中也需要安装 rpcbind 软件包,并启动 rpcbind
系统服务。另外,为了使用 showmount 查询工具,建议将 nfs-utils 软件包也一并装上。
[root@localhost ~]# yum -y install rpcbind nfs-utils
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl start rpcbind
如果已经安装了 nfs-utils 软件包,则客户机也可以使用 showmount 查看 NFS 服务器
端共享了哪些目录,查询格式为 “showmount -e 服务器地址
[root@localhost ~]# showmount -e 192.168.7.250
Export list for 192.168.7.250:
/opt/wwwroot 192.168.7.0/24
/var/ftp/pub 192.168.4.110,192.168.4.11

2:手动挂载 NFS 共享目录

root 用户身份执行 mount 操作,将 NFS 服务器共享的 /opt/wwwroot 目录挂载到本
地目录 /var/www/html 。与挂载本地文件系统不同的是,设备位置处应指出服务器地址。
[root@localhost ~]# mount 192.168.7.250:/opt/wwwroot /var/www/html
[root@localhost ~]# tail -1 /etc/mtab                                         //确认挂载结果
192.168.7.250:/opt/wwwroot                 /var/www/html                 nfs4
rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=6
00,retrans=2,sec=sys,clientaddr=192.168.7.21,local_lock=none,addr=192.168.7.250 0 0
[root@localhost ~]# vim /var/www/html/index.html                 //在客户机创建测试文件
Real Web Server Document
完成挂载以后,访问客户机的 /var/www/html 文件夹,实际上就相当于访问 NFS 服务器
中的 /opt/wwwroot 文件夹,其中的网络映射过程对于用户程序来说是透明的。例如,上述
操作中创建的 index.html 测试文件,会立刻出现在服务器的 /opt/wwwroot/ 目录下。

3:fstab 自动挂载设置

修改 /etc/fstab 配置文件,加入 NFS 共享目录的挂载设置。注意将文件系统类型设为
nfs ,挂载参数建议添加 _netdev (设备需要网络);若添加 soft intr 参数可以实现软挂载,
允许在网络中断时放弃挂载。这样客户机就可以在每次开机后自动挂载 NFS 共享资源了。
[root@localhost ~]# vi /etc/fstab
…… // 省略部分信息
192.168.7.250 :/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0

4:强制卸载 NFS

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

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值