在Centos中搭建本地YUM源、远程YUM仓库与NFS共享存储服务

前言

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

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

一、YUM仓库服务

1.1YUM概述

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

1.2YUM安装

1.2.1软件仓库的提供方式

  • FTP服务:ftp://……
  • HTTP服务: http://……
  • 本地目录:file://……

1.2.2RPM软件包的来源

  • 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.3YUM工具概述

1.3.1关于YUM命令

  • 由软件包yum-3.4.3-150.el7.centos.noarch提供
  • 用来访问YUM仓库,查询、 下载及安装、卸载软件包

1.3.2YUM的配置文件

  • 基本设置: /etc/yum.conf
  • 仓库设置: /etc/yum.repos.d/*.repo
  • 日志文件: /var/log/yum.log

1.3.3YUM缓存目录

  • 存放下载的软件包、仓库信息等数据
  • 位于/var/cache/yum/$ basearch/$releasever
[root@localhost ~]# yum clean all          #清空缓存

1.4软件包查询

1.4.1查询软件包

yum list <软件包>               #查看软件列表
yum info <软件包>               #查看软件包详细信息
yum search <关键词>             #检查软件包的信息
yum whatprovides <关键词>       #查看文件/目录归属于哪个软件包

1.4.2查询软件包组

yum grouplist [包组名]
yum groupinfo [包组名]

1.5软件安装、升级、卸载

1.5.1安装软件

yum install [软件名]
yum group install [软件名]

1.5.2升级软件

yum updata         #既更新软件包,同时也更新系统内核
yum upgrade        #只更新软件包
yum groupupdata

1.5.3卸载软件

yum remove [软件名]

1.6搭建本地YUM源

在有网情况下我们可以直接联网使用YUM仓库,假如没有网呢?我们就需要搭建本地YUM源来安装软件包,下面我们就模拟没有网场景搭建YUM仓库

[root@localhost ~]# cd /etc/yum.repos.d/       #yum仓库的配置文件
[root@localhost yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
[root@localhost yum.repos.d]# mkdir bak        #创建bak目录
[root@localhost yum.repos.d]# mv *.repo bak    #将yum仓库的配置文件剪切到bak目录
[root@localhost yum.repos.d]# ls
bak
[root@localhost yum.repos.d]# ls bak
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
[root@localhost yum.repos.d]# 
[root@localhost yum.repos.d]# yum list

在这里插入图片描述

[root@localhost yum.repos.d]# yum install httpd -y     #安装Apache已无法安装
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
There are no enabled repos.
 Run "yum repolist all" to see the repos you have.
 To enable Red Hat Subscription Management repositories:
     subscription-manager repos --enable <repo>
 To enable custom repositories:
     yum-config-manager --enable <repo>

我们在安装centos时已经将本地镜像挂载在光驱里了
在这里插入图片描述

[root@localhost yum.repos.d]# mount /dev/cdrom /mnt          #挂载光盘
[root@localhost yum.repos.d]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  4.1G   46G    9% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       245G   37M  245G    1% /home
tmpfs                   tmpfs     378M  4.0K  378M    1% /run/user/42
tmpfs                   tmpfs     378M   40K  378M    1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /mnt

在这里插入图片描述

[root@localhost mnt]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim 123.repo      #手工搭建本地YUM源

[123]
name=base
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@localhost yum.repos.d]# yum list          #再次查看yum软件列表

在这里插入图片描述

1.7搭建远程YUM源环境

创建两台虚拟机,一台作服务机,一台作客户机
在这里插入图片描述
服务端配置:

[root@server ~]# mount /dev/cdrom /mnt     #挂载光盘
[root@server ~]# yum install vsftp* -y     #安装ftp服务
[root@server ~]# cd /var/ftp
[root@server ftp]# ls
pub
[root@server ftp]# mkdir centos7
[root@server ftp]# ls
centos7  pub
[root@server ftp]# cp -rf /mnt/* /var/ftp/centos7/ &           #将mnt下yum配置文件复制到centos7目录下
[root@server ftp]# createrepo -g /mnt/repodata/repomd.xml other/   #建立yum索引环境
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[1]+  完成                  cp -i -rf /mnt/* /var/ftp/centos7/
[root@server ftp]# iptables -F
[root@server ftp]# setenforce 0 
[root@server ftp]# systemctl start vsftpd        #启动ftp服务

客户端配置

[root@client ~]# yum install ftp -y
[root@client ~]# ftp 192.168.100.144
Connected to 192.168.100.144 (192.168.100.144).
220 (vsFTPd 3.0.2)
Name (192.168.100.144:root): ftp              #匿名登录不需要密码
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls                                        #可以查看到ftp中的目录文件
227 Entering Passive Mode (192,168,100,144,115,86).
150 Here comes the directory listing.
drwxr-xr-x    8 0        0             220 Jul 13 02:42 centos7
drwxr-xr-x    3 0        0              22 Jul 13 02:43 other
drwxr-xr-x    2 0        0               6 Apr 01 04:55 pub
226 Directory send OK.
[root@client ~]# cd /etc/yum.repos.d/          #到yum的配置文件中模拟断网情况
[root@client yum.repos.d]# mkdir bak
[root@client yum.repos.d]# mv *.repo bak
[root@client yum.repos.d]# vim 123.repo        #搭建远程yum仓库

[base]
name=centos7.Packages
baseurl=ftp://192.168.100.144/centos7
enabled=1
gpgcheck=1
gpgkey=ftp://192.168.100.144/centos7/RPM-GPG-KEY-CentOS-7

[other]
name=other.Packages
baseurl=ftp://192.168.100.144/other
enabled=1
gpgcheck=0
[root@client yum.repos.d]# yum clean all       #清空yum缓存
已加载插件:fastestmirror, langpacks
正在清理软件源: base other
Cleaning up list of fastest mirrors
Other repos take up 403 M of disk space (use --verbose for details)
[root@client yum.repos.d]# yum list         

在这里插入图片描述

二、NFS共享存储服务

2.1NFS (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.100.0(rw,sync,no_root_squash)
/var/ftp/pub 192.168.179.10(ro) 192.179.50(rw)
  • 启动NFS服务程序
  • 查看本机发布的NFS共享目录
[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  
[root@localhost opt]# showmount -e

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.197.171:/opt/wwwroot /var/www/html
    完成挂在后,访问客户机的/var/www/html文件夹,相当于访问NFS服务器中的/opt/wwwroot文件夹,其中的网络映射过程对于用户程序来说是透明的
  • fstab自动挂载设置
    修改/etc/fstab配置文件,加入NFS共享目录的挂载设置。
    注意将文件系统类型设置为nfs,挂载参数建议添加_netdev(设备需要网络)
    若添加soft,intr参数可以实现软挂载,允许在网络中断时放弃挂载。
  • 强制卸载NFS
    NFS客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端NFS服务突然停掉了,那么在客户端就会出现df -h命令卡死的现象
    此时使用umount命令是无法直接卸载的,需要加上-lf才能卸载
    出现卡死现象时,需要重新打开一个终端,执行 cat/etc/rc.local命令,查看挂载点
    然后使用umount命令卸载,其中-l表示解除正在繁忙的文件系统,-f表示强制

2.4构建NFS服务

还是和上面一样,两台虚拟机,一台作服务机,一台作客户机,服务机添加一块硬盘做共享用
服务机配置

[root@server ~]# fdisk /dev/sdb            #将sdb磁盘分区
[root@server ~]# mkfs.xfs /dev/sdb1        #格式化sdb1
[root@server ~]# vim /etc/fstab            #永久挂载sbd1磁盘到/share
......
/dev/sdb1 /share xfs defaults 0 0
[root@server ~]# mount -a
[root@server ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  4.8G   46G   10% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       245G   37M  245G    1% /home
tmpfs                   tmpfs     378M   12K  378M    1% /run/user/42
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sdb1               xfs        20G   33M   20G    1% /share
[root@server ~]# iptables -F
[root@server ~]# setenforce 0
[root@server ~]# yum install nfs-utils rpcbind -y    #安装nfs、pcbind服务
[root@server ~]# vim /etc/exports

/share 192.168.100.0/24(rw,sync,no_root_squash)
[root@server ~]# systemctl start rpcbind             #启动rpcbind服务
[root@server ~]# systemctl enable rpcbind            #开机自启rpcbind服务
[root@server ~]# systemctl start nfs                 #启动nfs服务
[root@server ~]# systemctl enable nfs                #开机自启nfs服务
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@server ~]# systemctl status nfs
[root@server ~]# netstat -ntap | grep rpc
[root@server ~]# showmount -e                        #查看发布的NFS共享目录
Export list for server:
/share 192.168.100.0/24

客户机配置

[root@client ~]# yum install httpd -y
[root@client ~]# iptables -F
[root@client ~]# setenforce 0
[root@client ~]# mount 192.168.100.144:/share /var/www/html/    #临时挂载服务机的/share文件夹到本机里的/var/www/html/ 文件夹
[root@client ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  4.8G   46G   10% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       245G   37M  245G    1% /home
tmpfs                   tmpfs     378M  4.0K  378M    1% /run/user/42
tmpfs                   tmpfs     378M   40K  378M    1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
192.168.100.144:/share  nfs4       20G   32M   20G    1% /var/www/html
[root@client ~]# vim /etc/fstab           #永久挂载服务机的/share文件夹到本机里的/var/www/html/ 文件夹
......
192.168.100.144:/share  /var/www/html   nfs     defaults,_netdev        0 0
[root@client ~]# cd /var/www/html/
[root@client html]# ls
[root@client html]# vim index.html          #在客户机创建网页

<h1>this is changlianliting web</h1>

服务机

[root@server ~]# cd /share/
[root@server share]# ls                     #可以看到服务机中的share文件夹有了刚刚创建的网页
index.html
[root@server share]# cat index.html 
<h1>this is changlianliting web</h1>

在这里插入图片描述
客户机

[root@client html]# cd ~
[root@client ~]# umount /var/www/html/     #将共享挂载点卸载了
[root@client ~]# ls /var/www/html/         #创建的网页随之没有

在这里插入图片描述
客户机

[root@client ~]# mount -a                    #再次挂载

服务机

[root@server share]# systemctl stop nfs      #停止nfs服务

服务机将nfs服务关闭后,在客户机中查看挂载点已无法查看
在这里插入图片描述
客户机

[root@client ~]# umount -lf /var/www/html    #将挂载点强制卸载
[root@client ~]# df -Th                      #可以查看
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  4.8G   46G   10% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       245G   37M  245G    1% /home
tmpfs                   tmpfs     378M  4.0K  378M    1% /run/user/42
tmpfs                   tmpfs     378M   36K  378M    1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_6

这里要注意的是,输入强制卸载命令时是不可以tab补全命令的,使用tab补全会导致卡死,之后需要Ctrl+c强制关闭,再重新输入命令

猜你喜欢

转载自blog.csdn.net/weixin_47153988/article/details/107309620