部署 YUM 仓库及NFS 共享服务

部署 YUM 软件仓库

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

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目录为样板
  1. 安装并启用 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. 在客户机上需要指定至少一个可用的软件仓库,然后才能使用下一节将要介绍的 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”两行配置用来检查软件包的完整性,若无此要求则可以省略。

[root@localhost ~]# vi /etc/yum.repos.d/local.repo
[local]
name=CentOS 7.3
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

到这里 YUM 软件仓库的配置工作就算完成了,下一节将介绍 yum 命令的使用,通过集中提供的软件仓库来管理客户机中的软件安装。在 CentOS 7 服务器中,yum 工具是最常用的 YUM 客户端工具,由默认安装

使用 yum 工具管理软件包

yum-3.2.29- 40.el6.noarch 软件包提供。下面分别介绍如何使用 yum 工具来查询、安装、升级及卸载软件包。yum 工具的常见查询操作包括查询软件包列表、查询软件包的描述信息、查询指定的软件包,分别可结合子命令 list、info、search 来实现

查询软件包

直接执行“yum list”命令可以获得系统中的软件安装情况,也可以查询软件仓库中可用的软件包列表,其中子命令 list 表示列表查看

  1. yum list——查询软件包列表
[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”命令,则表示只列出可以升级版本的软件包。
当需要查看某个软件包的描述信息时,可以执行“yum info 软件包名”,其中子命令 info
表示获取信息。例如,执行以下操作可以查看软件包 httpd 的信息

  1. yum info——查询软件包的描述信息
[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. 当需要根据某个关键词来查找相关的软件包时,可以执行“yum search 关键词”,默认仅根据软件包名称和描述信息进行搜索;若执行“yum search all 关键词”,可以扩大搜索范围。例如,执行以下操作将搜索软件仓库并列出与“httpd”相关的软件包

  1. yum search——查询指定的软件包
[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
  1. 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 所包括的软件包等信息。
使用 yum 工具安装、升级软件包,分别通过子命令 install、update 来完成,操作对象为指定的软件包名(可以有多个)。执行操作时会自动检查并解决软件包之间的依赖关系,期间会提示用户按 Y 键确认安装或升级操作,若希望自动确认,可以在 yum 命令后添加“-y” 选项。例如,执行以下操作将从软件仓库下载并安装 net-snmp 软件包,并自动解决其依赖
关系

安装、升级、卸载软件包

使用 yum 工具安装、升级软件包,分别通过子命令 install、update 来完成,操作对象为指定的软件包名(可以有多个)。执行操作时会自动检查并解决软件包之间的依赖关系,期间会提示用户按 Y 键确认安装或升级操作,若希望自动确认,可以在 yum 命令后添加“-y” 选项。例如,执行以下操作将从软件仓库下载并安装 net-snmp 软件包,并自动解决其依赖
关系

安装、升级、卸载软件包

[root@localhost ~]# yum -y install net-snmp …… //省略部分信息
依赖关系解决
====================================================================== Package 架构 版本 源 大小
====================================================================== 正在安装:
net-snmp x86_64 1:5.7.2-24.el7_2.1 base 321 K
为依赖而安装:
net-snmp-agent-libs x86_64 1:5.7.2-24.el7_2.1 base 702 K
事务概要
====================================================================== 安装 1 软件包 (+1 依赖软件包)
总下载量:1.0 M
安装大小:2.9 M
Downloading packages:
(1/2): net-snmp-5.7.2-24.el7_2.1.x86_64.rpm | 321 KB 00:00
(2/2): net-snmp-agent-libs-5.7.2-24.el7_2.1.x86_64.rpm| 702 KB 00:00
---------------------------------------------------------------------- 总计 1.1 MB/s | 1.0 MB 00:00 …… //省略部分信息
已安装:
net-snmp.x86_64 1:5.7.2-24.el7_2.1
作为依赖被安装:
net-snmp-agent-libs.x86_64 1:5.7.2-24.el7_2.1
完毕!

使用 yum 工具卸载软件包时,通过子命令 remove 来完成,卸载操作通过软件仓库也可以完成。例如,执行以下操作将卸载 autofs 软件包,并自动解决其依赖关系。

[root@localhost ~]# yum -y remove autofs …… //省略部分信息
Running transaction
正在删除 : ipa-client-4.4.0-12.el7.centos.x86_64 1/2
正在删除 : 1:autofs-5.0.7-56.el7.x86_64 2/2
验证中 : 1:autofs-5.0.7-56.el7.x86_64 1/2
验证中 : ipa-client-4.4.0-12.el7.centos.x86_64 2/2
删除:
autofs.x86_64 1:5.0.7-56.el7
作为依赖被删除:
ipa-client.x86_64 0:4.4.0-12.el7.centos


完毕!

注意:使用yum 工具管理软件包时,结合子命令groupinstall、groupupdate、groupremove可以针对软件分组进行安装、升级、卸载操作。例如,若执行“yum -y groupremovegnome-desktop”命令,则会删除整个 Desktop 分组所包含的软件包。

NFS 共享存储服务

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

使用 NFS 发布共享资源

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

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

提供 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
  1. 设置共享目录

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)
[root@localhost ~]# vi /etc/exports
/var/ftp/pub 192.168.4.11(ro) 192.168.4.110(rw)
  1. 启动 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
  1. 查看本机发布的 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

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

  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
  1. 手动挂载 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
  1. 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
  1. 强制卸载 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 ~]#
  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值