YUM
(Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器 是一个基于RPM的软件包管理器,能够从指定服务器自动下载RPM包并且安装,可以处理软件之间的依赖关系,一次性安装所有依赖的软件包,无需一个个下载安装。
YUM的工作原理包括两个部分YUM服务器和客户端
YUM服务器
Linux客户端
所有软件包由集中的YUM软件仓库提供
扩充:
centos7 rhel7 使用的都是yum来解决安装的问题(.rpm包)
centos8 rhel8 使用的是DNF来解决安装的问题,但DNF也是基于yum来解决安装问题的
Ubuntu debian 使用的是apt 安装包是(.deb包)也是可以一键解决安装的问题
软件仓库的提供方式
FTP服务:ftp://....
HTTP服务:http://....
本地目录:fild://.....
RPM软件包的来源
- CentOS发布的RPM包集合
- 第三方组织发布的RPM包集合
- 用户自定义的RPM包集合
设置本地YUM源的格式
/etc/yum.repo.d/文件
[项目名称]
name=仓库名称
baseurl=file:///挂点 //本地源
ftp://FTP服务器地址 //ftp源
http:// https://URL地址 //在线源
enabled=1 开启仓库
gpgcheck=1需要验证
gpgkey=密钥的位置
gpgcheck=0不验证
本地源
如果挂载不上会显示
mount: 在 /dev/sr0 上找不到媒体
打开终端上面找到自己的虚拟机
连接以后就可以正常挂载了
要把自己的光盘镜像挂载到指定的目录之中
建立本地源仓库文件
FTP(默认是匿名访问)
FTP服务器(File Transfer ProtocolServer)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务,FTP是File TransferProtocol (文件传输协议),顾名思义,就是专门用来传输文件的协议,简单地说,支持FTP协议的服务器就是FTP服务器
如果要使用FTP服务就要先安装软件
如果要是用FTP协议就要用给FTP加载镜像文件
用一台机器当做客户端使用服务端的ftp服务
baseurl=ftp:///192.168.85.10/7 /7 FTP服务提供的目录
比如说客户端需要安装httpd那么就会使用到服务端提供的tpf服务器带来的安装协议
centos 在线源
如果说想用http在线源的话可以在官网去下载来进行使用centos 在线源
直接在网上搜索一个在线源来使用,安装
安装后会默认使用自己安装的在线源
阿里源
列如诉求: 当既有本地yum源又有aliyun源的时候,我们在装软件包的时候当然希望先用本地的yum源去安装, 本地找不到可用的包时再使用aliyun源去安装软件,这里就涉及到了优先级的问题, yum提供的插件yum-plugin-priorities.noarch可以解决这个问题
上机之前建议还是先关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
搭建本地yum源
[root@localhost ~]# mount /dev/sr0 /mnt
[root@localhost ~]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# mkder bak
[root@localhost yum.repos.d]# mv *.repo bak
[root@localhost yum.repos.d]# vim yum.repo
[root@localhost yum.repos.d]# yum clean all && yum makecache
打开可以连接外网的系统
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/rs-7.repo
[root@localhost yum.repos.d]# yum clean all && yum makecache //刷新缓存,清理缓存并且生成新的缓存
1.查看是否安装了yum-plugin优先级插件
[root@localhost yum.repos.d]# rpm -qa |grep yum-plugin
yum-plugin-fastestmirror-1.1.31-42.el7.noarch
2.如果没有安装,就安装插件
[root@localhost yum.repos.d]# yum -y install yum-plugin-priorities.noarch
3.查看插件是否启用
[root@localhost yum.repos.d]# cat /etc/yum/pluginconf.d/priorities.conf
[main]
enabled = 1 //1为启动,0为禁止
4.修改本地yum源优先使用
5.验证安装包的数量
Loading mirror speeds from cached hostfile
yum 命令仅下载安装包
[root@localhost ~]# yum install --downloadonly mariadb
#下载下来的安装包都是放在 /var/cache/yum/x86_64/7/ 目录下
[root@localhost ~]#yumdownloader --destdir=/opt mariadb mariadb-server
#yumdownloader 仅下载指定软件包,参数 --destdir 是用来指定存放下载的安装包的目录
NFS共享存储服务
NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;
NFS一般用来存储共享视频,图片等静态数据。
- NFS网络文件系统
- 依赖于RPC(远端过程调用)
- 选择nfs-stils,rpcbind软件包
- 系统服务:nfs,rpcbinf
- 共享配置文件:/etc/exports
由于NFS没有认证机制,并且是铭文传输,所以安全性较差,一般是在局域网络环境使用
NFS挂载原理:
NFS架构图
** NFS客户端和NFS服务器通讯过程**
-
首先服务器端启动RPC服务,并开启111端口
-
服务器端启动NFS服务,并向RPC注册端口信息
-
客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
-
服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
-
客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。
所以需要安装nfs-utils rpcbind 软件包来提供服务,前者用于NFS共享发布和访问,后者用于 RPC 支持
实验
在文件服务器使用 NFS 发布共享资源
1.客户端安装NFS共享服务(nfs-utils、rpcbind 软件包)
[root@localhost ~]# rpm -q rpcbind nfs-utils
[root@localhost ~]# yum -y install nfs-utils rpcbind
2.设置共享策略配置文件
客户机地址可以是主机名、IP 地址、网段地址,允许使用“*”、“?”通配符。
“rw” 表示允许读写,“ro” 表示为只读。
sync :表示同步写入到内存与硬盘中。
no_root_squash : 表示当客户机以root身份访问时赋予本地root权限(默认是root_squash)。
root_squash :表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户。
其它常用选项
all_squash :所有访问用户都映射为匿名用户或用户组。
async :将数据先保存在内存缓冲区中,必要时才写入磁盘。
subtree_check(默认):若输出目录是一个子目录,则nfs服务器将检查其父目录的权限。
no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率。
anonuid=xxxx :指定NFS服务器/etc/psaawd文件匿名用户的UID
anongid=xxx :指定NFS服务器/etc/group文件匿名用的GID
sync 写入数据会同时写入内存和硬盘 (保证数据安全,数据不会丢失,写入会受到硬盘IO性能的影响,可能会影响读写速度,会大量消耗固态硬盘的寿命)
async 写入数据是会在写入内存的缓冲区里面,然后根据系统的同步策略在刷新到硬盘中(写入熟读块)
[root@localhost ~]# vim /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin //NFS匿名用户,不指定就是这个名字
[root@localhost opt]# vim /etc/exports
rpcbind使用的是111端口
[root@localhost opt]#netstat -anpt | grep rpcbind
[root@localhost opt]# netstat -nltup |grep 111
手动加载NFS共享服务时,应该
先启动rpcbind,再启动nfs
[root@localhost opt]# systemctl start rpcbind
[root@localhost opt]# systemctl start nfs
查看共享信息
[root@localhost opt]# showmount -e
Export list for localhost.localdomain:
/opt/778 192.168.85.0/24
服务端和客户端都要关闭防火墙,不然无法共享
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
1.服务端只需要安装(rpcbind)即可
安装软件
[root@localhost ~]# yum -y install rpcbind
看一下共享目录
[root@localhost ~]# showmount -e 192.168.85.10
Export list for 192.168.85.10:
挂载
[root@localhost ~]# mount 192.168.85.10:/opt/778 /data
直接到服务端目录中写入一些东西看看客服机是否可以收到
客户端登录以后查看挂载目录,就可以查看到服务端写入的文件内容
及时在让一台虚拟机加入共享文件依旧可以查看到服务端写入的文件
客户端想写入是无法写入会提醒权限不足
[root@localhost data]# echo '9987' > 73
-bash: 73: 权限不够
虽然是写的rw可读可写,但是指定的是匿名用户
[root@localhost 778]# vim /etc/exports
/opt/778 192.168.85.0/24(rw,async)
给其他用户加上权限
现在就可以成功写入了
包括服务端这边也能看到是成功写入了
可以看见客户端写入的文件是用的匿名用户
客户端在写入东西 就会不会再显示匿名用户了
创建一个新的用户写入东西在服务端会显示他的UID号
永久挂载
vim /etc/fstab
加一个空格就可以单独控制一台客户机
3.强制卸载NFS
我的服务端突然死机了
客户端就会进入一个假死的状态
[root@localhost ~]# umount -lf /data
总结
yum 仓库的搭建使用
NFS服务的使用与各种个性化设置