【Linux网络】部署YUM仓库及NFS共享服务


一、YUM概述

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

在这里插入图片描述

不同系统的软件安装方式及扩展名

系统类型文件类型(扩展名)软件包安装方式
RHEL、CentOS.rpmyum
Ubuntu、Debian.debapt

RPM软件包的来源

  • CentOS发布的RPM包集合
  • 第三方组织发布的RPM包集合
  • 用户自定义的RPM包集合

构建CentOS 7软件仓库:

  • RPM包来自CentOS 7 DVD光盘
  • 通过FTP方式提供给客户机

在软件仓库中加入非官方RPM包组

  • 包括存在依赖关系的所有RPM包
  • 使用createrepo工具建立仓库数据文件(创建软件包依赖关系索引表)
createrepo -g 软件包目录 依赖关系索引表文件的所在目录
-g:指定依赖关系索引表文件的所在目录

二、YUM源的提供方式

1.配置本地源

本地yum源仓库只能给本机使用

配置方式

beseurl=file://......

配置过程

  首先在本地挂载镜像后将.repo后缀的文件进行备份,然后编写配置文件,最后清理yum缓存并更新就可以测试了。具体过程如下:

[root@host ~]# mount /dev/sr0 /mnt				#把光盘挂载到/mnt目录下(前提虚拟机是光盘挂载)
[root@host ~]# df -Th							#查看挂载情况
文件系统       类型      容量  已用  可用 已用% 挂载点
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/sda2      xfs        35G  5.4G   30G   16% /
tmpfs          tmpfs     378M   12K  378M    1% /run/user/42
tmpfs          tmpfs     378M     0  378M    0% /run/user/0
/dev/sr0       iso9660   4.4G  4.4G     0  100% /mnt

[root@host ~]#cd /etc/yum.repos.d/				#进入yum源仓库
[root@host yum.repos.d]# mkdir repo.bak			#新建备份文件夹
[root@host yum.repos.d]# ls
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo         
CentOS-CR.repo         CentOS-Media.repo      CentOS-x86_64-kernel.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo     repo.bak
[root@host yum.repos.d]#  mv *.repo repo.bak/	#将含有.repo的文件放进备份文件夹中
[root@host yum.repos.d]# ls
repo.bak
[root@host yum.repos.d]# vim local.repo			#配置本地yum源
[local]											#仓库类别,本地唯一,用于区分不同yum源
name=local										#仓库名称
baseurl=file:///mnt								#指定URL 访问路径为光盘挂载目录
enabled=1										#开启此yum源,此为默认项,1启用yum源,0禁用yum源
gpgcheck=0										#不验证软件包的签名
[root@host yum.repos.d]# ls
local.repo  repo.bak

[root@host yum.repos.d]# yum clean all && yum makecache		#清理yum缓存并更新	

[root@host yum.repos.d]# yum install -y  tomcat		  #测试本地yum安装
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
...
  tomcat-servlet-3.0-api.noarch 0:7.0.76-15.el7                xalan-j2.noarch 0:2.7.1-23.el7                        xerces-j2.noarch 0:2.11.0-17.el7_0               
  xml-commons-apis.noarch 0:1.4.01-16.el7                      xml-commons-resolver.noarch 0:1.2-15.el7             

完毕!

2.配置ftp源

  ftp源yum仓库能给所有能连接此ftp服务器的用户使用(注意要关闭防火墙)

配置方式

beseurl=ftp:// .....

配置过程

  首先安装vsftpd服务端软件(默认已经安装了,然后创建并制作yum远程ftp站点的源,接着启动ftp服务,然后创建远程yum源的配置文件,最后用yum安装软件验证结果。

[root@host ~]# systemctl stop firewalld							#关闭防火墙
[root@host ~]# setenforce 0										#关闭selinux服务
[root@host ~]# cd /mnt/Packages/								#进入rpm软件包目录
[root@host Packages]# ls vsftpd*								#查找vftpd软件包
vsftpd-3.0.2-28.el7.x86_64.rpm
[root@host Packages]# rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm 	#安装vsftp软件包
警告:vsftpd-3.0.2-28.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
	软件包 vsftpd-3.0.2-28.el7.x86_64 已经安装
[root@host Packages]# systemctl start vsftpd					#启动vsftpd服务
[root@host Packages]#  cd /var/ftp/								#匿名用户访问的根目录
[root@host ftp]# mkdir  /var/ftp/centos7   						#创建挂盘挂载目录
[root@host ftp]# mount /dev/sr0 /centos7  						#镜像挂载
[root@host ~]# df -h											#查看挂载情况
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G   13M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda2        36G  4.7G   32G   14% /
tmpfs           378M     0  378M    0% /run/user/0
/dev/sr0        4.4G  4.4G     0  100% /var/ftp/centos7 
tmpfs           378M   12K  378M    1% /run/user/42
[root@host ftp]# cd centos7/
[root@host centos7]# ls											#查看文件,repodata文件存储了软件包的依赖表
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@host centos7]# systemctl status vsftpd					#查看vsftppd启动状态
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 五 2023-04-21 09:38:27 CST; 5h 13min ago
  Process: 2284 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 2287 (vsftpd)
    Tasks: 1
   CGroup: /system.slice/vsftpd.service
           └─2287 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

4月 21 09:38:27 host systemd[1]: Starting Vsftpd ftp daemon...
4月 21 09:38:27 host systemd[1]: Started Vsftpd ftp daemon.
 
[root@host centos7]#vim /etc/yum.repos.d/centos7.repo 				#创建远程yum源的配置文件
[ftp]  																#仓库类别
name=ftp  															#仓库名称(说明)
baseurl=ftp://192.168.145.15/centos7   								#指定URL,访问路径为光盘挂载目录,因为ftp的根目录在/var/ftp,所以直接写centos7
enabled=1   														#启用此软件仓库
gpgcheck=1    														#验证软件包的签名
gpgkey=ftp://192.168.145.15/centos7/RPM-GPG-KEY-CentOS-7			#GPG 公钥文件的位置
[root@host yum.repos.d]# ls
ftp.repo  repo.bak
[root@host yum.repos.d]# yum clean all && yum makecache 			#清理yum缓存并更新	
已加载插件:fastestmirror, langpacks
正在清理软件源: ftp
Cleaning up list of fastest mirrors
Other repos take up 188 M of disk space (use --verbose for details)
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
ftp                                                           | 3.6 kB  00:00:00     
(1/4): ftp/group_gz                                           | 153 kB  00:00:00     
(2/4): ftp/primary_db                                         | 3.3 MB  00:00:00     
(3/4): ftp/filelists_db                                       | 3.3 MB  00:00:01     
(4/4): ftp/other_db                                           | 1.3 MB  00:00:00     
元数据缓存已建立
[root@host yum.repos.d]# yum install -y httpd						#测试
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-95.el7.centos 将被 安装
--> 正在处理依赖关系 httpd-tools = 2.4.6-95.el7.centos,它被软件包 httpd-2.4.6-95.el7.centos.x86_64 需要
--> 正在处理依赖关系 /etc/mime.types,它被软件包 httpd-2.4.6-95.el7.centos.x86_64 需要
--> 正在检查事务
---> 软件包 httpd-tools.x86_64.0.2.4.6-95.el7.centos 将被 安装
---> 软件包 mailcap.noarch.0.2.1.41-2.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

=====================================================================================
 Package             架构           版本                           源           大小
=====================================================================================
正在安装:
 httpd               x86_64         2.4.6-95.el7.centos            ftp         2.7 M
为依赖而安装:
 httpd-tools         x86_64         2.4.6-95.el7.centos            ftp          93 k
 mailcap             noarch         2.1.41-2.el7                   ftp          31 k

事务概要
=====================================================================================
安装  1 软件包 (+2 依赖软件包)

总下载量:2.8 M
安装大小:9.6 M
Downloading packages:
警告:/var/cache/yum/x86_64/7/ftp/packages/httpd-tools-2.4.6-95.el7.centos.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
httpd-tools-2.4.6-95.el7.centos.x86_64.rpm 的公钥尚未安装
(1/3): httpd-tools-2.4.6-95.el7.centos.x86_64.rpm             |  93 kB  00:00:00     
(2/3): mailcap-2.1.41-2.el7.noarch.rpm                        |  31 kB  00:00:00     
(3/3): httpd-2.4.6-95.el7.centos.x86_64.rpm                   | 2.7 MB  00:00:00     
-------------------------------------------------------------------------------------
总计                                                     15 MB/s | 2.8 MB  00:00     
从 ftp://192.168.145.15/centos7/RPM-GPG-KEY-CentOS-7 检索密钥			#这里可以看到使用ftpyum源安装软件
导入 GPG key 0xF4A80EB5:
 用户ID     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 指纹       : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 来自       : ftp://192.168.145.15/centos7/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
  正在安装    : mailcap-2.1.41-2.el7.noarch                                                                                                                          1/3 
  正在安装    : httpd-tools-2.4.6-95.el7.centos.x86_64                                                                                                               2/3 
  正在安装    : httpd-2.4.6-95.el7.centos.x86_64                                                                                                                     3/3 
  验证中      : httpd-tools-2.4.6-95.el7.centos.x86_64                                                                                                               1/3 
  验证中      : mailcap-2.1.41-2.el7.noarch                                                                                                                          2/3 
  验证中      : httpd-2.4.6-95.el7.centos.x86_64                                                                                                                     3/3 

已安装:
  httpd.x86_64 0:2.4.6-95.el7.centos                                                                                                                                     

作为依赖被安装:
  httpd-tools.x86_64 0:2.4.6-95.el7.centos                                                 mailcap.noarch 0:2.1.41-2.el7                                                

完毕!

3.配置在线源

配置方式

beseurl=http://.....
beseurl=https://.....

  通过网络在线使用软件

3-1 CentOS7 清华源

  下载链接:https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/

[root@host ~]# wget -0 /etc/yum.repos.d/CentOS7-Base-tsinghua.repo  https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/
[root@host ~]# vim CentOS7-Base-tsinghua.repo   #编辑清华 yum 网络源
 
[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

3-2 163 yum源

  下载链接: http://mirrors.163.com/.help/CentOS7-Base-163.repo

[root@host ~]# wget -0 /etc/yum.repos.d/CentOS7-Base-163.repo   http://mirrors.163.com/.help/CentOS7-Base-163.repo
[root@host ~]# 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-3 阿里云

  下载地址: http://mirrors.aliyun.com/repo/Centos-7.repo

[root@host ~]# wget -0 /etc/yum.repos.d/CentOS7-Base-aliyun.repo   http://mirrors.aliyun.com/repo/Centos-7.repo
[root@host ~]# vim CentOS7-Base-aliyun.repo   #编辑阿里云yum 网络源
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
 
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0
 
[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://mirrors.aliyun.com/epel/7/SRPMS
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0

3-4 其他在线源

http://ftp.sjtu.edu.cn/centos 
#上海交大,但服务器位于北京,中国教育网网络中心, 北方用户与教育网用户推荐,速度飞快。
 
http://centos.ustc.edu.cn,
#中国科技大学,服务器位于合肥。 南方用户推荐。
 
http://mirrors.sohu.com/
#sohu的开源镜像服务器,服务器位于山东省联通。 速度飞快,全国用户推荐,经常用FireFox下载CD镜像

4.如何实现本地yum源和在线源分优先级

  首先安装yum-plugin-priorities优先级插件,接着创建本地源,然后在本地源仓库里添加在线源参数,接着在两个源仓库中添加priority参数设置优先级。

[root@host yum.repos.d]# yum install yum-plugin-priorities	#安装优先级软件包
[root@host yum.repos.d]# rpm -qa | grep yum-plugin-priorities
yum-plugin-priorities-1.1.31-54.el7_8.noarch
[root@host ~]#vim /etc/yum.repos.d/centos7.repo 
[ftp]
name=ftp
baseurl=ftp://192.168.145.15/centos7
enabled=1
gpgcheck=1
gpgkey=ftp://192.168.145.15/centos7/RPM-GPG-KEY-CentOS-7
priority=1													#设置优先级,数值越小,优先级越高

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
priority=2													#设置优先级,数值越小,优先级越高

[root@host yum.repos.d]# yum install -y nginx				#测试优先级,ftp软件包中没有nginx,则会使用在线源
已加载插件:fastestmirror, langpacks, priorities
Loading mirror speeds from cached hostfile
epel/x86_64/primary_db                                        | 7.0 MB  00:00:30     
10 packages excluded due to repository priority protections
正在解决依赖关系
--> 正在检查事务
---> 软件包 nginx.x86_64.1.1.20.1-10.el7 将被 安装
--> 正在处理依赖关系 nginx-filesystem = 1:1.20.1-10.el7,它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
--> 正在处理依赖关系 libcrypto.so.1.1(OPENSSL_1_1_0)(64bit),它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
--> 正在处理依赖关系 libssl.so.1.1(OPENSSL_1_1_0)(64bit),它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
--> 正在处理依赖关系 libssl.so.1.1(OPENSSL_1_1_1)(64bit),它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
--> 正在处理依赖关系 nginx-filesystem,它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
--> 正在处理依赖关系 libcrypto.so.1.1()(64bit),它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
--> 正在处理依赖关系 libssl.so.1.1()(64bit),它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
--> 正在检查事务
---> 软件包 nginx-filesystem.noarch.1.1.20.1-10.el7 将被 安装
---> 软件包 openssl11-libs.x86_64.1.1.1.1k-5.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

=====================================================================================
 Package                  架构           版本                     源            大小
=====================================================================================
正在安装:
 nginx                    x86_64         1:1.20.1-10.el7          epel         588 k
为依赖而安装:
 nginx-filesystem         noarch         1:1.20.1-10.el7          epel          24 k
 openssl11-libs           x86_64         1:1.1.1k-5.el7           epel         1.5 M

事务概要
=====================================================================================
安装  1 软件包 (+2 依赖软件包)

总下载量:2.1 M
安装大小:5.3 M
Downloading packages:
(1/3): nginx-filesystem-1.20.1-10.el7.noarch.rpm              |  24 kB  00:00:00     
(2/3): nginx-1.20.1-10.el7.x86_64.rpm                         | 588 kB  00:00:02     
(3/3): openssl11-libs-1.1.1k-5.el7.x86_64.rpm                 | 1.5 MB  00:00:06     
-------------------------------------------------------------------------------------
总计                                                    327 kB/s | 2.1 MB  00:06     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : 1:openssl11-libs-1.1.1k-5.el7.x86_64                             1/3 
  正在安装    : 1:nginx-filesystem-1.20.1-10.el7.noarch                          2/3 
  正在安装    : 1:nginx-1.20.1-10.el7.x86_64                                     3/3 
  验证中      : 1:nginx-filesystem-1.20.1-10.el7.noarch                          1/3 
  验证中      : 1:nginx-1.20.1-10.el7.x86_64                                     2/3 
  验证中      : 1:openssl11-libs-1.1.1k-5.el7.x86_64                             3/3 

已安装:
  nginx.x86_64 1:1.20.1-10.el7                                                       

作为依赖被安装:
  nginx-filesystem.noarch 1:1.20.1-10.el7    openssl11-libs.x86_64 1:1.1.1k-5.el7   

完毕!

5.总结

软件仓库类型命令格式支持的访问数量优缺点
本地源beseurl=file:// …一对一安装快,但是软件数量少,版本低
ftp源beseurl=ftp:// …一对多安装快,但是软件数量少,版本低
在线源beseurl=http://…
beseurl=https://…
一对多软件数量多,版本新,但是安装前需要更新缓存,安装速度较慢。在线源最好使用国内镜像,传输快。

三、YUM下载软件包的方式

1.利用yum的缓存功能

  默认情况下,yum在安装软件包后会自动清理软件包,软件包没有被缓存下来,需要修改配置文件/etc/yum.conf,使yum不再清理软件包,即可得到所有下载的软件包。

[root@centos1 yum.repos.d]# ls
ftp.repo	repo.bak
[root@centos1 yum.repos.d]# cd /var/cache/
[ root@centos1 cache]# ls
abrt-di		cups		gdm		ibus		ldconfig	man		realmd		yum
coolkey		fontconfig 	httpd 	krb5rcache 	libvirt 	Package	Kit			tomcat
[root@centos1 cache]# cd yum/
[root@centos1 yum]# pwd
/var/ cache/ yum
[root@centos1 yum]# lsx86_64
[root@centos1 yum]# cd x86_64/7/
[root@centos1 7]#ls			
base  epel  extras  ftp  timedhosts  timedhosts.txt  updates
[root@host 7]# pwd								#YUM下载软件包的缓存位置以及清除缓存的文件位置
/var/cache/yum/x86_64/7

[root@host ~]# vim /etc/yum.conf				#修改缓存配置文件
[main]
cachedir=/var/cache/yum/$basearch/$releasever	#缓存目录位置
keepcache=1										#0代表不保留缓存,1代表保留缓存。所以此处修改为1,默认为0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

2.downloadonly插件

  downloadonly可以仅下载所需软件和及其依赖包,大大解决了无外网安装时找依赖包的问题,同时也可以在一台可以上外网的主机执行。

[root@host yum.repos.d]# yum install -y --downloadonly tomcat --downloaddir=/opt/pkg	#downloadonly设置只下载软件包,downloaddir指定下载目录
[root@host yum.repos.d]# cd /opt/pkg
[root@host pkg]# ls
apache-commons-collections-3.2.1-22.el7_2.noarch.rpm
apache-commons-daemon-1.0.13-7.el7.x86_64.rpm
apache-commons-dbcp-1.4-17.el7.noarch.rpm
apache-commons-logging-1.1.2-7.el7.noarch.rpm
apache-commons-pool-1.6-9.el7.noarch.rpm
avalon-framework-4.3-10.el7.noarch.rpm
avalon-logkit-2.1-14.el7.noarch.rpm
ecj-4.5.2-3.el7.x86_64.rpm
geronimo-jms-1.1.1-19.el7.noarch.rpm
geronimo-jta-1.1.1-17.el7.noarch.rpm
javamail-1.4.6-8.el7.noarch.rpm
log4j-1.2.17-16.el7_4.noarch.rpm
tomcat-7.0.76-15.el7.noarch.rpm
tomcat-el-2.2-api-7.0.76-15.el7.noarch.rpm
tomcat-jsp-2.2-api-7.0.76-15.el7.noarch.rpm
tomcat-lib-7.0.76-15.el7.noarch.rpm
tomcat-servlet-3.0-api-7.0.76-15.el7.noarch.rpm
xalan-j2-2.7.1-23.el7.noarch.rpm
xerces-j2-2.11.0-17.el7_0.noarch.rpm
xml-commons-apis-1.4.01-16.el7.noarch.rpm
xml-commons-resolver-1.2-15.el7.noarch.rpm

3.yum-utils中的yumdownloader

  单纯的使用yumdownloader 只会下载指定的RPM软件包,安装时候所需要的一些依赖不会被下载。如果要下载依赖包加上--resolve参数。如果要指定下载目录,加上--destdir参数。

[root@host ~]# yumdownloader --destdir=/opt/package httpd --resolve
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
local                                                         | 3.6 kB  00:00:00     
(1/2): local/group_gz                                         | 153 kB  00:00:00     
(2/2): local/primary_db                                       | 3.3 MB  00:00:00     
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-95.el7.centos 将被 安装
--> 正在处理依赖关系 httpd-tools = 2.4.6-95.el7.centos,它被软件包 httpd-2.4.6-95.el7.centos.x86_64 需要
--> 正在处理依赖关系 /etc/mime.types,它被软件包 httpd-2.4.6-95.el7.centos.x86_64 需要
--> 正在检查事务
---> 软件包 httpd-tools.x86_64.0.2.4.6-95.el7.centos 将被 安装
---> 软件包 mailcap.noarch.0.2.1.41-2.el7 将被 安装
--> 解决依赖关系完成
(1/3): httpd-tools-2.4.6-95.el7.centos.x86_64.rpm             |  93 kB  00:00:00     
(2/3): mailcap-2.1.41-2.el7.noarch.rpm                        |  31 kB  00:00:00     
(3/3): httpd-2.4.6-95.el7.centos.x86_64.rpm                   | 2.7 MB  00:00:00     
[root@host ~]# cd /opt/package/
[root@host package]# ls
httpd-2.4.6-95.el7.centos.x86_64.rpm        mailcap-2.1.41-2.el7.noarch.rpm
httpd-tools-2.4.6-95.el7.centos.x86_64.rpm

四、yum命令

1.yum常用的操作命令

yum -y install 软件名					#安装、升级软件包,“-y”选项表示自动确认
yum -y remove 软件名					#卸载软件包,可自动解决其依赖关系
yum -y update 软件名					#升级软件包

yum list							  #查询软件包列表
yum list installed					  #查询系统中已安装的软件包
yum list available					  #查询仓库中尚未安装的软件包
yum list updates				      #查询可以升级版本的软件包

2.案列搜索RPM包(两种方法)

yum search vim
yum list|grep "vim"

查询软件包

yum info 软件名						#查询软件包的描述信息
yum info httpd

yum search [all] 关键词				#根据某个关键词来查找相关的软件包
yum search all httpd

yum whatprovides 命令					#查询命令属于哪个软件包
yum whatprovides netstat

3.下载RPM包而不安装

yum install 包名 -y --downloadonly
yum reinstall -y bash --downloadonly    				#下载已安装过的rpm包
yum install 包名 -y --downloadonly --downloaddir=/tmp/     #下载RPM包到指定目录

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存储设备必然支持的一种协议,但是因为没有用户认证机制,而且数据在网络上明文传输,安全性很差,所以一般只能在局域网中使用

  NFS服务使用的是2049端口号。由于文件系统非常复杂,因此NFS服务还需要依赖于RPC服务去启动额外的端口,RPC服务(rpcbind)使用的是111端口号。使用NFS服务和RPC服务需要需安装nfs-utilsrpcbind这两个软件包。 NFS的共享配置文件存放在/etc/exports目录下。

2.NFS挂载原理

  NFS的主要功能是通过网络让不同的主机之间可以彼此共享文件和目录。例如下图:

在这里插入图片描述

  NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。一般客户端挂载到本地目录的名字可以随便,但为方便管理,我们要和服务器端一样比较好。其就相当于windows里面共享文件,然后其他主机把这个共享文件映射成了本地盘使用一样。

3.NFS原理

  NFS服务端有两个依赖服务,分别是RPC(rpcbind)服务和NFS服务。服务端需要先启动RPC(rpcbind)服务并开启111端口,然后启动NFS服务,并向RPC(rpcbind)服务注册端口信息,接着服务端将需要共享文件挂载到服务端创建的共享目录。此时客户端想要访问服务端进行实现获取共享文件也会需要启动RPC(rpcbind)服务,并使用RPC(rpcbind)服务向服务端的RPC(rpcbind)服务请求服务端的NFS端口,服务端的RPC((rpcbind)服务反馈NFS端口信息给客户端。最后客户端通过TCP/IP网络协议获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

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

4.补充

共享存储服务的类型

系统类型程序
windows共享存储服务cifs
linux共享存储服务nfs

设备类别

存储类型使用的设备及服务
块存储硬盘、LVM、RAID
文件存储NFS
对象存储OSS

六、NFS共享服务部署

1.NFS配置文件/etc/exports

常用格式

<共享目录绝对路径>   客户端地址(nfs共享参数)

  共享目录绝对路径可以是一个或多个,若是多个共享目录,则使用多个命令行表示。

  客户端地址可以是主机名、IP地址、网段地址,允许使用*通配符。多个地址用空格分隔。

常用选项及描述

常用选项描述
rw该主机对该共享目录有读写权限
ro该主机对该共享目录只有读权限
sync同步写入到内存与硬盘中,最大限度保证数据安全
root_squash当客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户(默认)
no_root_squash当客户机用root用户访问该共享文件夹时赋予本地root权限
all_squash客户机上的任何用户访问该共享目录时都映射成匿名用户或用户组
anonuid=XXX指定NFS服务器/etc/passwd文件中匿名用户UID
anongid=XXX指定NFS服务器/etc/group文件中匿名用户GID
sync资料同步写入到内存与硬盘中(占用大量的I/O)
async资料会先暂存于内存中,必要时写入硬盘
insecure允许从这台机器过来的非授权访问
subtree_check如果共享/usr/bin之类的子目录时,强制NFS检查其父目录的权限(默认)
no_subtree_check如果共享/usr/bin之类的子目录时,不检查其父目录权限,这样可以提高效率
wdelay如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置
hide在NFS共享目录中不共享其子目录
no_hide共享NFS目录的子目录
secureNFS通过1024以下的安全TCP/IP端口发送
insecureNFS通过1024以上的端口发送

2.NFS部署完整过程

服务端设置

安装软件,启动服务

[root@host ~]# yum -y install nfs-utils rpcbind		#安装nfs和rpcbind
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 1:nfs-utils-1.3.0-0.68.el7.x86_64 已安装并且是最新版本
软件包 rpcbind-0.2.0-49.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@host ~]# systemctl start rpcbind				#优先启动rpcbind,否则客户端NFS服务可能会找不到服务端的NFS
[root@host ~]# systemctl start nfs					#启动nfs
[root@host ~]# systemctl enable rpcbind				#开机自动启动 rpcbind 服务
[root@host ~]# 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@host ~]# systemctl is-enabled rpcbind			#查看是否设置开机自启成功
enabled
[root@host ~]# systemctl is-enabled nfs				#查看是否设置开机自启成功
enabled
[root@host ~]#  systemctl stop firewalld			#关闭防火墙
[root@host ~]# etenforce 0							#关闭selinux

配置共享文件

[root@host ~]# cd /opt/
[root@host opt]# ls
a.txt  package  rh
[root@host opt]# ls package/									#查看共享目录package/					
httpd-2.4.6-95.el7.centos.x86_64.rpm        
mailcap-2.1.41-2.el7.noarch.rpm
httpd-tools-2.4.6-95.el7.centos.x86_64.rpm
[root@host opt]# vim /etc/exports								#NFS的配置文件,默认文件内容为空(无任何共享)
/opt/package 192.168.145.0/24(rw)								#设置共享文件目录允许网段是192.168.145.0/24的主机可读可写
[root@host opt]# systemctl restart nfs							#重启nfs服务,刷新配置文件
[root@host opt]# showmount -e									#查看当前共享文件情况
Export list for host:
/opt/package 192.168.145.0/24

  注意:如果服务端正在挂载nfs共享存储目录,重启nfs服务可能会不生效,有延迟,甚至卡死,可用下面的命令发布新的nfs配置(共享目录)

 exportfs -avr

客户端配置

挂载使用

[root@host ~]# rpm -q rpcbind										#查看rpcbind是否安装
rpcbind-0.2.0-49.el7.x86_64
[root@host ~]# systemctl stop firewalld.service						#关闭防火墙
[root@host ~]# setenforce 0											#关闭selinux
[root@host ~]# showmount -e 192.168.145.30							#在客户端查看当前服务端共享文件情况
Export list for 192.168.145.30:
/opt/package 192.168.145.0/24

[root@host ~]# cd /opt
[root@host opt]# mkdir /data										#创建挂载目录/data
[root@host opt]# mount -t nfs 192.168.145.30:/opt/package /data		#将共享文件挂载到data目录下,-t nfs可以省略
[root@host opt]# df -h												#查看挂载情况
文件系统                     容量  已用  可用 已用% 挂载点
devtmpfs                     1.9G     0  1.9G    0% /dev
tmpfs                        1.9G     0  1.9G    0% /dev/shm
tmpfs                        1.9G   13M  1.9G    1% /run
tmpfs                        1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda2                     36G  4.8G   32G   14% /
tmpfs                        378M   12K  378M    1% /run/user/42
tmpfs                        378M     0  378M    0% /run/user/0
/dev/sr0                     4.4G  4.4G     0  100% /mnt
192.168.145.30:/opt/package   35G  5.4G   30G   16% /data
[root@host opt]# cd /data/
[root@host data]# ls												#查看共享文件内容
httpd-2.4.6-95.el7.centos.x86_64.rpm        mailcap-2.1.41-2.el7.noarch.rpm
httpd-tools-2.4.6-95.el7.centos.x86_64.rpm

  若出现挂载卡死可以强制解挂umount /data -lf

测试权限

在客户端默认以root用户访问文件时,用户会降权称为匿名用户

[root@host data]# touch 123
touch: 无法创建"123": 权限不够

需要在服务端赋予共享文件777权限

[root@host opt]# chmod 777 package/
[root@host opt]# ll
总用量 4
-rw-r--r--. 1 root root   2 4月  20 18:25 a.txt
drwxrwxrwx. 2 root root 139 4月  21 19:56 package
drwxr-xr-x. 2 root root   6 10月 31 2018 rh

在客户端再次测试权限,,可以查看到在客户端以root用户创建的文件123后被文件123被降权成匿名用户创建的

[root@host data]# touch 123
[root@host data]# ll
总用量 2908
-rw-r--r--. 1 nfsnobody nfsnobody       0 4月  21 22:13 123
-rw-r--r--. 1 root      root      2846172 10月 15 2020 httpd-2.4.6-95.el7.centos.x86_64.rpm
-rw-r--r--. 1 root      root        95136 10月 15 2020 httpd-tools-2.4.6-95.el7.centos.x86_64.rpm
-rw-r--r--. 1 root      root        31264 7月   4 2014 mailcap-2.1.41-2.el7.noarch.rpm
[root@host data]# 

若不想降权可在服务端的NFS配置文件设置

在客户端解挂载

[root@host ~]# umount /data/

在服务端修改NFS配置文件,添加no_root_squash,重启服务

[root@host opt]# vim /etc/exports
/opt/package 192.168.145.0/24(rw,no_root_squash)
[root@host opt]# systemctl restart nfs

在客户端测试

[root@host ~]# mount -t nfs 192.168.145.30:/opt/package /data
[root@host ~]# ls /data/
123                                   httpd-tools-2.4.6-95.el7.centos.x86_64.rpm
httpd-2.4.6-95.el7.centos.x86_64.rpm  mailcap-2.1.41-2.el7.noarch.rpm
[root@host ~]# cd /data/
[root@host data]# ll
总用量 2908
-rw-r--r--. 1 nfsnobody nfsnobody       0 4月  21 22:13 123
-rw-r--r--. 1 root      root      2846172 10月 15 2020 httpd-2.4.6-95.el7.centos.x86_64.rpm
-rw-r--r--. 1 root      root        95136 10月 15 2020 httpd-tools-2.4.6-95.el7.centos.x86_64.rpm
-rw-r--r--. 1 root      root        31264 7月   4 2014 mailcap-2.1.41-2.el7.noarch.rpm
[root@host data]# touch abc
[root@host data]# ll
总用量 2908
-rw-r--r--. 1 nfsnobody nfsnobody       0 4月  21 22:13 123
-rw-r--r--. 1 root      root            0 4月  21 22:39 abc
-rw-r--r--. 1 root      root      2846172 10月 15 2020 httpd-2.4.6-95.el7.centos.x86_64.rpm
-rw-r--r--. 1 root      root        95136 10月 15 2020 httpd-tools-2.4.6-95.el7.centos.x86_64.rpm

七、总结

  1. NFS服务多用于局域网内
  2. 搭建服务时一定要先启动rpc后启动nfs
  3. 配置文件中的信息格式一定要对,否则报错
  4. yum源安装软件包无需依赖包,大大节省时间
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的宝贝大唐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值