Linux--网络服务--部署远程YUM仓库和NFS共享存储服务,理论+实验详解

前言

  • YUM的前身是YUP (elov dog Upater Yllowo dog Linux 的软件更新器),最初由TSS公司(Terra Soft Solutions,INC.)使用Python语言开发而成,后来由杜克大学(Duck Uivest)的Limux开发队伍进行改进,命名为YUM (Yellow dog UpdaterModifed)。

  • 借助于YUM软件仓库,可以完成安装、卸载、自动升级rpm软件包等任务,能够自动查找并解决rpm包之间的依赖关系,而无须管理员逐个、手工地去安装每个rpm包,使管理员在维护大量Linux服务器时更加轻松自如。特别是在拥有大量Linux主机的本地网络中,构建一台 源服务器可以大大缓解软件安装、升级等对Internet的依赖。

  • 网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(pressentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

  • 对于大多数负责均衡群集来说,使用NFS协议来共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议。

  • 但是,NFS没有用户认证机制,而且数据在网络上明文传输,所以安全性很差,一般只能在局域网中使用。

一:构建远程YUM仓库

1.1:YUM概述

  • YUM(Yellow dog Updater, Modified)
  • 基于RPM包构建的软件更新机制
  • 可以自动解决依赖关系
  • 所有软件包由几种的YUM软件仓库提供
    在这里插入图片描述

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

  • 要成功使用YUM机制来更新系统和软件,需要有一个包含各种rpm的软件仓库(Repository) ,提供软件仓库的服务器也称为“源”服务器。只要正确指定软件仓库的地址等信息,就可以通过对应的 “源”服务器来安装或史新软件了。
  • YUM软件仓库通常借助于HTTP或FTP协议来进行发布,这样可以面向网络中的所有客户机提供软件源服务。为了便于客户机查询软件包,获取依赖关系等信息,在软件仓库中需要提供仓库数据(repodata),其中收集了目录下所有rpm包的头部信息。
1.2.1:软件仓库的提供方式
  • FTP服务:ftp://…
  • HTTP服务: http://…
  • 本地目录:file://…
1.2.2:RPM软件包的来源
  • CentOS发布的RPM包集合
  • 第三方组织发布的RPM包集合
  • 用户自定义的RPM包集合
1.2.3:构建CentOS7软件仓库
  • RPM包来自CentOS7 DVD光盘
  • 通过FTP,HTTP或本地目录提供给客户机
1.2.4:在软件仓库中加入非官方RPM包组
  • 包括存在依赖关系的所有RPM包
  • 使用createrepo工具建立仓库数据文件
1.2.5:配置软件仓库位置(客户机端)
  • 为客户机指定YUM仓库位置

    配置文件:/etc/yum.repo.d/*.repo

  • 直接以CentOS 7光盘作软件仓库

    将CentOS7光盘放入光驱

    指定仓库位置,URL地址为file:///media/cdrom

1.3:构建yum仓库实验

1.3.1:实验环境
  • VMware 软件
  • centos7虚拟机两台,一台作为服务器,提供软件源环境。一台作为客户端。
1.3.2:实验过程
  • 服务器

第一步:将centos7光盘镜像挂载到服务端(光盘镜像要连接状态)

[root@localhost ~]# hostnamectl set-hostname server             修改主机名为服务端,方便区分
[root@localhost ~]# su

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F9GBTMP2-1594560100920)(C:\Users\kevin\AppData\Roaming\Typora\typora-user-images\image-20200712203704654.png)]

第二步:安装vsftpd,ftp作为服务站点

[root@server ~]# cd /var/
[root@server var]# ls
[root@server var]# yum -y install vsftpd   

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rqAhft2K-1594560100922)(C:\Users\kevin\AppData\Local\YNote\data\weixinobU7Vjp7Em9NGx3fERlGz5rcrDLg\f85244e7903545ec8626add55368fad2\clipboard.png)]

[root@server var]# ls                             查看是否安装好ftp

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iM1Q3JGd-1594560395457)(C:\Users\kevin\AppData\Local\YNote\data\weixinobU7Vjp7Em9NGx3fERlGz5rcrDLg\6ef8f10892194d68a4c1f03b2a948b69\clipboard.png)]

这边FTP就可以作为我们的站点

第三步:准备软件仓库目录

在centos 7系统的安装光盘中,已针对软件目录Packages建立好repodata数据,因此只要简单地将整个光盘中的内容通过HTTP或FTP进行发布,就可以作为软件仓库了。

[root@server var]# cd ftp/
[root@server ftp]# ls
[root@server ftp]# mkdir centos7                               在站点下创建文件夹,存放镜像
[root@server ftp]# cp -rf /mnt/* centos7/ &             将镜像强制复制到centos7中,并在后台运行
[root@server ftp]# jobs                                                查看后台运行程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-opBECcvw-1594560100926)(C:\Users\kevin\AppData\Local\YNote\data\weixinobU7Vjp7Em9NGx3fERlGz5rcrDLg\dd75d08a7f7e499b9e4939fddf100ebb\clipboard.png)]

[root@server ftp]# mkdir other                          创建扩展目录,用于创建repodata数据文件

[root@server ftp]# ls

[root@server ftp]# createrepo -g /mnt/repodata/repomd.xml other/

在这里插入图片描述
第四步:查看各目录文件的内容是否安装好

[root@server ftp]# cd centos7
[root@server centos7]# ls
[root@server centos7]# cd ../other/
[root@server other]# ls
[root@server other]# cd repodata/
[root@server repodata]# ls

在这里插入图片描述

第五步:开启vsftpd服务

[root@server repodata]# cd ~
[root@server ~]# systemctl start vsftpd
[root@server ~]# netstat -ntap | grep 21   
[root@server ~]# netstat -ntap | grep 20
[root@server ~]# systemctl stop firewalld.service 
[root@server ~]# setenforce 0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JbBKwzgA-1594560100928)(C:\Users\kevin\AppData\Local\YNote\data\weixinobU7Vjp7Em9NGx3fERlGz5rcrDLg\7027613f3e034ca79eaec6e195e06eee\clipboard.png)]

  • FTP两个端口

21端口用于连接

20端口用于传输

  • 客户端

第一步:安装ftp服务,查看是否可以看到站点

[root@localhost ~]# hostnamectl set-hostname client
[root@localhost ~]# su
[root@client ~]# rpm -q ftp
[root@client ~]# yum install ftp -y

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vehE0Jub-1594560100928)(C:\Users\kevin\AppData\Local\YNote\data\weixinobU7Vjp7Em9NGx3fERlGz5rcrDLg\f112bdec998a49ba99df052b7acf98c7\clipboard.png)]

[root@client ~]# ftp 20.0.0.47

在这里插入图片描述
第二步:将所有的repo文件移动到bak下

[root@client yum.repos.d]# mkdir bak
[root@client yum.repos.d]# mv *.repo bak/         将所有以.repo结尾的都放到bak下
[root@client yum.repos.d]# yum clean all           清空yum仓库缓存
[root@client yum.repos.d]# yum list

在这里插入图片描述

第三步:自己写一个repo文件,并将秘钥复制到其中

[root@client yum.repos.d]# vim centos7.repo

在这里插入图片描述

[root@client yum.repos.d]# yum list   重新加载,发现软件包不是红色的了,说明已经生效

在这里插入图片描述

[root@client yum.repos.d]# setenforce 0
[root@client yum.repos.d]# systemctl stop firewalld.service 
[root@client yum.repos.d]# yum upgrade           更新
  • yum updata 更新软件包,更新软件和系统内核

  • yum upgrade 只更新软件包

1.4:yum工具概述

  • 关于yum命令

由软件包yum-…提供

用来访问yum仓库,查询,下载及安装,卸载软件包

  • yum的配置文件

基本设置:/etc/yum.conf

仓库设置:/etc/yum.repos.d/*.repo

日志文件:/var/log/yum.log

  • yum缓存目录

存放下载的软件包,仓库信息等数据
位于/var/cache/yum/basearch(硬件架构,如x8664)/basearch(硬件架构,如x86_64)/basearch(硬件架构,如x86 64)/releasever(OS版本)

清理缓存数据:yum clean all

1.5:软件包查询

查询软件包

  • yum list [软件名]…
  • yum info [软件名]…
  • yum search <关键词>…
  • yum whatprovides <关键词>…

查询软件包组

  • yum grouplist [包组名]…
  • yum groupinfo <包组名>…

1.6:软件安装升级与卸载

安装软件

  • yum install [软件名]
  • yum groupinstall <包组名>

升级软件

  • yum update

  • yum groupdate

  • yum update 更新软件包,连内核一起更新

    yum upgrade 只更新软件包,但不更新内核

卸载软件

  • yum remove <软件名>…
  • yum groupremove <包组名>…

二:NFS共享存储服务

2.1:网络文件系统(Network File System)

  • 依赖于RPC(远程过程调用)
  • 需安装nfs-utils,rpcbind软件包
  • 系统服务:nfs,rpcbind
  • 共享配置文件:/etc/exports

2.2:使用NFS发布共享资源

安装nfs-utils,rpcbind软件包

  • 提供RPC支持的服务为rpcbind,提供NFS共享的服务为nfs,安装完成后建议调整为开机自启动状态
  • 手动加载NFS共享服务时,应先启动rpcbind,然后在启动nfs

设置共享目录

  • NFS的配置文件为/etc/exports,文件内容默认为空(无任何共享)
  • 在exports文件中设置共享资源时,记录格式为“目录位置 客户机地址(权限选项)”

[root@localhost opt]# mkdir wwwroot
[root@localhost opt]# vim /etc/exports
/opt/wwwroot 192.168.7.0/24(rw,sync,no_root_squash)

启动NFS服务程序

[root@localhost opt]# mkdir wwwroot
[root@localhost opt]# vim /etc/exports
[root@localhost opt]# systemctl start rpcbind
[root@localhost opt]# systemctl start nfs
[root@localhost opt]# netstat -nuap | grep rpcbind
udp 0 0 0.0.0.0:600 0.0.0.0:* 48338/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 48338/rpcbind

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

[root@localhost opt]# showmount -e

/opt/wwwroot 192.168.7.0/24

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

安装rpcbind软件包,并启动rpcbind服务

  • 若要正常访问NFS共享资源,客户机中也需要安装rpcbind软件包,并启动rpcbind服务
  • 为了可以使用showmount查询工具,建议将nfs-utils软件包也一并装上
  • 使用 “showmount -e 服务器地址”可以查看NFS服务器端共享了那些目录

手动挂载NFS共享目录

  • 以root用户身份执行mount操作,将NFS服务器共享的/opt/wwwroot目录挂载到本地目录/var/www/html

  • 与挂载本地文件系统不同的是,设备位置处应指出服务器地址

  • 如:mount 192.168.7.250:/opt/wwwroot /var/www/html

  • 完成挂在后,访问客户机的/var/www/html文件夹,相当于访问NFS服务器中的/opt/wwwroot文件夹,其中的网络映射过程对于用户程序来说是透明的

fstab自动挂载设置

  • 修改/etc/fstab配置文件,加入NFS共享目录的挂载设置。
  • 注意将文件系统类型设置为nfs,挂载参数建议添加_netdev(设备需要网络)
  • 若添加soft,intr参数可以实现软挂载,允许在网络中断时放弃挂载。

[root@localhost opt]# vim /etc/fstab
192.168.7.250:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0

强制卸载NFS

  • NFS客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端NFS服务突然停掉了,那么在客户端就会出现df -h命令卡死的现象

  • 此时使用umount命令是无法直接卸载的,需要加上-lf才能卸载

  • 出现卡死现象时,需要重新打开一个终端,执行 cat/etc/rc.local命令,查看挂载点

  • 然后使用umount命令卸载,其中-l表示解除正在繁忙的文件系统,-f表示强制

2.4:构建NFS实验

2.4.1:实验环境
  • VMware软件
  • 两个centos7系统,一个做客户端,一个做服务端
2.4.2:实验过程

第一步:服务端添加硬盘并重启,服务端和客户端都修改名称,以便于实验效果

客户端修改
[root@localhost ~]# hostnamectl set-hostname client
[root@localhost ~]# su
[root@client ~]# 
服务器端修改
[root@localhost ~]# hostnamectl set-hostname server
[root@localhost ~]# su
[root@server ~]# 

第二步:进行磁盘分区,格式化并挂载刚添加的硬盘

[root@server ~]# fdisk /dev/sdb

在这里插入图片描述

[root@server ~]# mkfs.xfs /dev/sdb1

在这里插入图片描述

[root@server ~]# vim /etc/fstab 

在这里插入图片描述

[root@server ~]# mount -a           重新自动挂载
[root@server ~]# df -Th                查看挂载情况

第三步:安装nfs-utils rpcbind,并设置为开机自启

[root@server ~]# yum install nfs-utils rpcbind -y                 
rpcbind   远程调用
nfs-utils  工具包
[root@server ~]# systemctl enable nfs
[root@server ~]# systemctl enable rpcbind

第四步:设置共享目录

NFS的配置文件为/etc/exports,文件内容默认为空(无任何共享)。在exports文件中设置共享资源时,记录格式为“目录位置 客户机地址(权限选项)“。

[root@server ~]# vim /etc/exports

权限选项中的rw表示允许读写(ro为只读),sync表示同步写入,no_root_squash表示当客户机以root身份访问时赋予本地root权限(默认是root_squash,将作为nfsnobody用户降权对待)
在这里插入图片描述

第五步:启动NFS服务程序

[root@server ~]# systemctl start nfs
[root@server ~]# systemctl start rpcbind
[root@server ~]# netstat -anpt |grep rpc           查看是否开启服务

在这里插入图片描述

第六步:查看本机发布的NFS共享目录

[root@server ~]# setenforce 0 
[root@server ~]# showmount -e

在这里插入图片描述
第七步:关闭防火墙并安装HTTP

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@client ~]# yum -y install httpd
[root@client ~]# cd /var/www/html/
[root@client html]# ls

在这里插入图片描述

这个站点用之前给出存储空间20G
第八步:手动挂载NFS共享目录或者使用自动挂载

[root@client ~]# vim /etc/fstab

在这里插入图片描述

[root@client ~]# mount -a
[root@client ~]# df -Th

第九步:配置httpd网页并开启服务

[root@client ~]# cd /var/www/html
[root@client ~]# ls
[root@client ~]# vim index.html

在这里插入图片描述

[root@client ~]# systemctl start httpd

第十步:开启服务后直接在本机上访问20.0.0.47
在这里插入图片描述
第十一步:设置服务器端NFS服务断掉,开始强制卸载

[root@server ~]# systemctl stop nfs   服务器将NFS服务关闭

发现客户端挂载直接卡死
在这里插入图片描述

需要重新打开客户端

输入umount -lf /var/www/html
[root@server ~]# umount -lf /var/www/html           强制进行解挂

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HDLXuH8B-1594560100944)(C:\Users\kevin\AppData\Local\YNote\data\weixinobU7Vjp7Em9NGx3fERlGz5rcrDLg\175cfd0904354197b533c0f7254f0ed6\clipboard.png)]
注意的是这边不要用tab键进行补全,不然还会卡死。

猜你喜欢

转载自blog.csdn.net/m0_47219942/article/details/107305670