引言:
学习YUM 软件仓库,可以完成安装、卸载、自动升级 rpm 软件包等任务,能够自动 查找并解决 rpm 包之间的依赖关系,而无须管理员逐个、手工地去安装每个 rpm 包,使管理员在维护大量 Linux 服务器时更加轻松自如。特别是在拥有大量 Linux 主机的本地网络中, 构建一台“源”服务器可以大大缓解软件安装、升级等对Internet 的依赖。
一、部署YUM仓库服务
1、YUM概述
- YUM 的前身是 YUP(Yellow dog Updater,Yellow dog Linux 的软件更新器)。最初由TSS公司(Terra Soft Solutions,INC)使用 python 语言开发而成,后来由杜克大学(Dunk University)的 Linux 开发队伍进行改进,命名为 YUM(Yellow dog Updater Modified)。
- 借助于 YUM 软件仓库,可以完成安装、卸载、自动升级 rpm 软件包等任务,能够自动查找并解决 rpm 包之间的依赖关系,而无需管理员逐个、手工地去安装每一个 rpm 包,使管理员在维护大量 Linux 服务器时更加轻松自如。
- 特别是在拥有大量 Linux 主机的本地网络中,构建一台源服务器可以大大缓解软件安装、升级等对 Internet 的依赖。
2、YUM仓库服务
- 部署YUM软件仓库
- 使用YUM工具管理软件包
3、NFS共享存储服务
- 使用NFS发布共享资源
- 在客户端访问NFS共享
4、yum实现过程
要有安装包
安装包:
1.光驱里自带 挂载提供软件包
2.网络下载到本地
3.直接通过网络
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
yum需要依赖于环境,依赖于服务端和客户端,允许跨网络
服务器:
-
RPM包 (Packages文件夹中)
-
元数据(repodata文件夹:目录(软件的目录),1.软件的依赖关系,2.软件的位置)
最终形成两个文件夹 :Packages (包文件夹一般取名packages)和 repodata(元数据文件夹)
仓库类型:
-
光盘的仓库基本仓库 比较常用的
-
epel扩展仓库 比较新
5、如何实现安装服务
二、YUM源的提供方式
1、配置本地源仓库
mount /dev/sr0 /mnt #把光盘挂载到/mnt目录下(前提虚拟机是光盘挂载)
cd /etc/yum.repos.d/
vim local.repo
[local] #仓库描述
name=local #仓库名称
baseurl=file:///mnt #指定url访问路径为光盘挂载目录
gpgcheck=0 #不验证包安全性
yum clean all && yum makecache ##清理yum缓存并更新
yum repolist ###检查
2、配置FTP源
服务端:
- 安装vsftp服务
- 创建并制作yum远程vsftpd站点的源
- 启动vsftp服务
setenforce 0 ###关闭核心防护
systemctl stop firewalld ###关闭防火墙
rpm -qa|grep vsftpd ###检查是否安装了vsftpd
yum install vsftpd -y ###安装ftp服务
cd /var/ftp/ ###进入ftp根文件夹
ls
mkdir centos7 ###创建挂盘挂载目录
mount /dev/sr0 centos7/ ###镜像挂载
systemctl start vsftpd ###开启vsftpd服务
1.安装vsftp服务
2.去vsftp的根目录完成相关配置后重启服务
挂载:
客户端:
客户端
setenforce 0 ###关闭核心防护
systemctl stop firewalld ###关闭防火墙
yum install ftp ###安装ftp服务
ftp 20.0.0.100 ###去测试
cd /etc/yum.repos.d ###
mkdir bak ###
mv *.repo bak/ ###
vim ftp.repo ###
[ftp] ###仓库描述
name=ftp ###仓库名称
baseurl=ftp://20.0.0.100/centos7 ###指定url访问路径为光盘挂载目录
gpgcheck=0 ###不验证包的安全性
yum install tree ###验证,测试
搭建ftp仓库
3.验证
3、配置HTTP源
1.服务端:
- 安装httpd服务
- 创建并制作yum远程httpd站点的源
- 启动httpd服务
######服务端#####
systemctl stop firewalld ####先关闭防火墙
setenforce 0 ####核心防护
systemctl start httpd ##启动服务
yum install httpd -y ##装httpd
cd /var/www/html/ ##切换到固定目录
mkdir centos7 ##创建文件夹
mount /dev/sr0 centos7 ##挂载
systemctl restart httpd ##重启服务
2.安装httpd服务并开启服务
3.挂载光盘
4.客户端:
5.关闭防火墙和核心防护,
6.搭建http仓库
7.测试安装
3、网络源
1.Centos7 清华源
vim CentOS7-Base-tsinghua.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
2. 163 yum源
下载链接:wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
vim CentOS7-Base-163.repo #编辑163 yum 网络源
[base]
name=CentOS-$releasever - Base - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
3.阿里云
下载地址:wget http://mirrors.aliyun.com/repo/Centos-7.repo
vim CentOS7-Base-aliyun.repo #编辑阿里云yum 网络源
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
4.其他网络源
http://ftp.sjtu.edu.cn/centos
#上海交大,但服务器位于北京,中国教育网网络中心, 北方用户与教育网用户推荐,速度飞快。
http://centos.ustc.edu.cn,
#中国科技大学,服务器位于合肥。 南方用户推荐。
http://mirrors.sohu.com/
#sohu的开源镜像服务器,服务器位于山东省联通。 速度飞快,全国用户推荐,经常用FireFox下载CD镜像
5.Centos系统的yum源及其他源
CentOS系统的yum源
#阿里云
https://mirrors.aliyun.com/centos/$releasever/
#腾讯云
https://mirrors.cloud.tencent.com/centos/$releasever/
#华为云
https://repo.huaweicloud.com/centos/$releasever/
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/
EPEL的yum源
#阿里云
https://mirrors.aliyun.com/epel/$releasever/x86_64
#腾讯云
https://mirrors.cloud.tencent.com/epel/$releasever/x86_64
#华为云
https://mirrors.huaweicloud.com/epel/$releasever/x86_64
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64
#更新源
http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
三、YUM常用命令
1、yum常用命令
yum -y install 软件名 #安装、升级软件包,“-y”选项表示自动确认
yum -y remove 软件名 #卸载软件包,可自动解决其依赖关系
yum -y update 软件名 #升级软件包
yum list #查询软件包列表
yum list installed #查询系统中已安装的软件包
yum list available #查询仓库中尚未安装的软件包
yum list updates #查询可以升级版本的软件包
yum info 软件名 #查询软件包的描述信息
yum info httpd
yum search [all] 关键词 #根据某个关键词来查找相关的软件包
yum search all httpd
yum whatprovides 命令 #查询命令属于哪个软件包
yum whatprovides netstat
2、下载RPM包而不安装
yum install 包名 -y --downloadonly
yum reinstall -y bash --downloadonly ###下载已安装过的rpm包
yum install 包名 -y --downloadonly --downloaddir=/tmp/ ###下载RPM包到指定目录
3、案例搜索RPM包(两种方法)
yum search vim
yum list|grep "vim"
查询软件包
yum list [软件名] ###显示可用的安装包,如不加软件名是显示所有的可用包
yum list *httpd* #包含httpd 的软件包
yum info 软件名 #查询软件包的描述信息
yum info httpd
yum search [all] 关键词 #根据某个关键词来查找相关的软件包
yum search all httpd
yum provides <关键词> #知道某个命令却不知道具体的包
yum grouplist [包组名] #安装包组的查询 不加包组名 就是显示所有
yum groupinfo <包组名> #不加包组名显示全部
yum whatprovides 命令 #查询命令属于哪个软件包
yum whatprovides netstat
4、yum history命令
yum history 查看历史记录来找到它所依赖的包,然后删除。
yum history list 列出最近的历史
yum history info id 列出某次的详细信息,
yum history undo id 撤销某次更改
yum history help 查看帮助
yum history redo加入序号重新执行序号里的操作
四、NFS共享存储服务
1、NFS概述
- NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 sun 公司开发。通过使用 NFS协议,客户机可以像访问本地目录一样访问远程 NFS 服务器中的共享资源。
- NFS 也是 NAS存储设备必然支持的一种协议,但是因为没有用户认证机制,而且数据在网络上明文传输,安全性很差,所以一般只能在局域网中使用。
存储类型分为三种:
- 直连式存储:Direct-Attached Storage,简称DAS。
- 网络附加存储:Network-Attached Storage,简称NAS。
- 存储区域网络:Storage Area Network,简称SAN。
2、设置共享目录
NFS的配置文件为/etc/exports,文件内容默认为空(无任何共享)
在exports 文件中设置共享资源时,记录格式为“目录位置 客户机地址(权限选项)。
例如,将文件夹 /opt/web 共享给 192.168.109.0/24网段使用,允许读写操作,配置如下
mkdir /opt/nfs
vim /etc/exports
/opt/nfs 20.0.0.100/24(rw,sync,no_root_squash)
常用选项:
- rw 表示允许读写
- ro 表示为只读
- sync 表示同步写入到内存与硬盘中
- no_root_squash表示当客户机以root身份访问时赋予本地root权限(默认是root_squash),如果不加那么客户端无法在里面编辑或写入文件,因为默认以nfsnobody的权限
- root_squash 表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户
其他常用选项:
- all_squash 所有访问用户都映射为匿名用户或用户组
- async 将数据先保存在内存缓冲区中,必要时才写入磁盘,速度快但会丢失数据
- subtree_check(默认) 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限
- no_subtree_check 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
举例:
其中客户机地址可以是主机名 ID 地址、网段地址,允许使用 “*” “?” 通配符;权限选项中的 rw 表示允许读写(ro为只读),sync表示同步写入,no_root_squash表示当客户机以 root 身份访问时赋予本地 root 权限(默认是root_squash,将为 nfsnobody 用户降权对待)。
当需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格隔指定多个“客户机(权限选项)”即可。
例如,以下操作将 /var/ftp/public 目录共享给两个客户机,并分别给予只读、读写权限。
[root@localhost ~]# vim /etc/exports
/var/ftp/public 20.0.0.101(ro) 20.0.0.102(rw)
3、安装nfs-utils、rpcbind 软件包
NFS 服务的实现依赖于 RPC (Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在Centos 7系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。
rpm -q rpcbind nfs-utils #查询是否安装
yum install -y nfs-utils rpcbind #安装nfs和rpc的软件包
systemctl start nfs #开启nfs服务
systemctl start rpcbind #开启rpcbind服务
systemctl enable nfs #开机自启nfs服务
systemctl enable rpcbind #开机自启rpcbind服务
4、NFS特点
- 采用TCP/IP传输网络文件
- 安全性低
- 简单易操作
- 适合局域网环境
NFS端口号不固定
RPC端口号111
1.写配置文件
vim /etc/exports
2.在客户端查看服务端是否共享、挂载
3.测试,在客户端创建文件
4.在服务端的配置文件需要修改,即便是修改了权限但客户端还是没有权限,无法创建。看第三步绿色框的内容。改为rw
5.这时给文件夹最大权限就可以
注意:NAS要注意:文件夹本身的权限和服务的权限
5、启动NFS服务并验证结果
systemctl start nfs #开启nfs服务
systemctl start rpcbind #开启rpcbind服务
systemctl enable nfs #开机自启nfs服务
systemctl enable rpcbind #开机自启rpcbind服务
netstat -anpu | grep rpc #过滤出rpc所有UDP连接信息
rpcinfo -p localhost #查看nfs向rpc注册的端口信息
exports -v #验证结果
exports -r #刷新结果
umount -lf /mnt/ #强制解挂
showmount -e localhost #验证共享
总结:
本文内容主要讲了NFS的安装步骤,先安装nfs和rpcbind软件,然后修改配置文件设置共享,再创建共享目录,最后开启服务,客户端就可以访问共享目录了。