Linux--网络服务--部署远程YUM仓库和NFS共享存储服务,理论+实验详解
- 前言
- 一:构建远程YUM仓库
- 1.1:YUM概述
- 1.2:准备网络安装源(服务器端)
- 1.2.1:软件仓库的提供方式
- 1.2.2:RPM软件包的来源
- 1.2.3:构建CentOS7软件仓库
- 1.2.4:在软件仓库中加入非官方RPM包组
- 1.2.5:配置软件仓库位置(客户机端)
- 1.3:构建yum仓库实验
- 1.3.1:实验环境
- 1.3.2:实验过程
- 1.4:yum工具概述
- 1.5:软件包查询
- 1.6:软件安装升级与卸载
- 二:NFS共享存储服务
- 2.1:网络文件系统(Network File System)
- 2.2:使用NFS发布共享资源
- 2.3:在客户机中访问NFS共享资源
- 2.4:构建NFS实验
- 2.4.1:实验环境
- 2.4.2:实验过程
前言
- 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
第二步:安装vsftpd,ftp作为服务站点
[root@server ~]# cd /var/
[root@server var]# ls
[root@server var]# yum -y install vsftpd
[root@server var]# ls 查看是否安装好ftp
这边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 查看后台运行程序
[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
- FTP两个端口
21端口用于连接
20端口用于传输
- 客户端
第一步:安装ftp服务,查看是否可以看到站点
[root@localhost ~]# hostnamectl set-hostname client
[root@localhost ~]# su
[root@client ~]# rpm -q ftp
[root@client ~]# yum install ftp -y
[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 强制进行解挂
注意的是这边不要用tab键进行补全,不然还会卡死。