部署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), 提供软件仓库的服务器也称为“源”服务器。在客户机中只要正确指定软件仓库的地址等信息,就可以通过对应的“源”服务器来安装或更新软件。
准备网络安装源(服务器端)
YUM 软件仓库通常借助于HTTP 或 FTP 协议来进行发布,这样可以面向网络中的所有 客户机提供软件源服务。为了便于客户机查询软件包,获取依赖关系等信息,在软件仓库中需要提供仓库数据 ( repodata), 其中收集了目录下所有 rpm 包的头部信息。
1. 准备软件仓库目录
在CentOS7系统的安装光盘中,已针对软件目录 Packages 建立好 repodata 数据,因此只要简单地将整个光盘中的内容通过HTTP 或 FTP 进行发布,就可以作为软件仓库了。例如,可以创建var/ftp/centos7目录,并确保有足够的可用空间(本例中建议大于5GB ),然后将CentOS7 光盘中的所有数据复制到该目录下。
[root@localhost~]#mkdir -p /var/ftp/centos7
[root@localhost ~]#cp-rf/media/cdromf /var/ftp/centos7
对于用户搜集的非CentOS7光盘自带的更多其他软件包(必须包括存在依赖关系的所 有安装文件),除了准备相应的目录之外,还需要手动创建 repodata 数据文件,这就要用到createrepo 工具(需要从CentOS 7光盘中安装)。
配置软件仓库位置(客户端)
在客户机上需要指定至少一个可用的软件仓库,然后才能使用下一节将要介绍的 yum 工具来下载、安装软件包。yum 工具使用的软件仓库信息存放在/etc/yum.repos.d 目录下扩展名为“repo” 的文件中。
使用 yum 工具管理软件包
在 CentOS 7 服 务 器 中 ,yum 工具是最常用的 YUM 客户端工具,由默认安装的yum-3.2.29-40.el6.noarch 软件包提供。下面分别介绍如何使用 yum 工具来查询、安装、升级及卸载软件包。
查询软件包
yum 工具的常见查询操作包括查询软件包列表、查询软件包的描述信息、查询指定的软件包,分别可结合子命令 list 、info 、search来实现。
1.yum list——查询软件包列表
直接执行“yum list”命令可以获得系统中的软件安装情况,也可以查询软件仓库中可用的软件包列表,其中子命令 list 表示列表查看。
[root@localhost ~]#yum list
若执行“yum list installed”命令,则表示只列出系统中已安装的软件包;若执行“yum list available” 命令,则表示只列出软件仓库中可用(尚未安装)的软件包;若执行“yum list updates”命令,则表示只列出可以升级版本的软件包。
2.yum info 查询软件包的描述信息
当需要查看某个软件包的描述信息时,可以执行“yum info 软件包名”,其中子命令info表示获取信息。
3.yum search——查询指定的软件包
当需要根据某个关键词来查找相关的软件包时,可以执行“yum search 关键词”,默认 仅根据软件包名称和描述信息进行搜索;若执行“yum search all关键词”,可以扩大搜索范围。
[root@localhost~]# yum search all httpd
4.yum whatprovides—— 查 询 命 令 属 于 哪 个 软 件 包
在使用Linux 操作系统过程中,经常遇到找不到某命令的现象。那这个命令需要安装什么软件包之后才会出现呢? yum找某个命令属于哪个软件包。
whatprovides 就可以解决这个问题的。
[root@localhost~]#yum whatprovides netstat
注意:通过执行查询操作"yum grouplist"yum groupinfo 分组名称”可以获得YUM仓库中的软件分组信息。例如,执行“yum groupinfo gnome-desktop”命令后将列出软件分组 gnome-desktop 所包括的软件包等信息。安装、升级、卸载软件包
使用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 存储设备必然支持的一种协议。
使用NFS 发布共享资源
NFS 服务的实现依赖于RPC(Remote Process Call, 远端过程调用)机制,以完成远 程到本地的映射过程。在 CentOS7 系统中,需要安装 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
2. 设置共享目录
NFS 的配置文件为/etc/exports, 文件内容默认为空(无任何共享)。在 exports 文件中 设置共享资源时,记录格式为“目录位置 客户机地址(权限选项)”。
[root@localhost ~]# mkdir -p lopt/wwwroot
[root@localhost ~]#viletc/exports /optwwwroot 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~]#viletc/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
4. 查看本机发布的 NFS 共享目录
[root@localhost ~]# showmount -e
在客户机中访问 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
2. 手动挂载 NFS 共享目录
以 root 用户身份执行 mount 操作,将 NFS 服务器共享的/optwwwroot目录挂载到本地 目 录/var/www/html 。与挂载本地文件系统不同的是,设备位置处应指出服务器地址。
[root@localhost~]#mount 192.168.7.250:/opt/wwwroot /var/www/html
完成挂载以后,访问客户机的/var/www/html 文件夹,实际上就相当于访问NFS 服务器中 的/optwwwroot 文件夹,其中的网络映射过程对于用户程序来说是透明的。例如,上述操作中创建的 index.html 测试文件,会立刻出现在服务器的/optwwwroot/目录下。
3.fstab 自 动 挂 载 设 置
修 改/etc/fstab 配置文件,加入 NFS 共享目录的挂载设置。注意将文件系统类型设为 nfs,挂载参数建议添加_netdev(设备需要网络);若添加 soft 、intr 参数可以实现软挂载,允许在网络中断时放弃挂载。这样客户机就可以在每次开机后自动挂载 NFS 共享资源了。
4. 强 制 卸 载 NFS
NFS 客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端 NFS 服务突然间停掉了,那么在客户端就会出现执行 df-h 命令卡死的现象。这个时候使用umount 命令是无法直接卸载的,需要加上 -If 才能卸载。
当出现卡死现象时,要重新开一个终端,执行 cat /etc/rc.local 命令,查看挂载点。然后使用umount 命令卸载,其中-1表示解除正在繁忙的文件系统, -f 表示强制。
[root@localhost~]#umount /mnt umount.nfs:/mnt:device is busy
[root@localhost ~]#umount -lf /mnt