部署yum仓库及NFS共享服务

128 阅读11分钟

YUM简介

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

yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间 为什么会有依赖关系的发生 因为linux本身就是以系统简洁为自身优势,所以在安装操作系统的时候并没有将所有的库文件以及编译软件包进行安装,所以在linux操作系统上进行软件安装的时候会出现软件包依赖的情况。yum由仓库和客户端组成,也就是整个yum由两部分组成,所以yum可以存放在两台服务器上。也可以存放在一台服务器上。可以有官方来提供服务,也可以由第三方来提供,比如国内的阿里云,搜狐云,还有一些非盈利组织比如学校等。官方的源一般在国外,下载速度肯定有限,手动更改成国内的云可以大幅提升下载速度。

YUM主配置文件

主配置文件

[main]
cachedir=/var/cache/yum/$basearch/$releasever  //yum下载的RPM包的缓存目录 $basearch代表硬件 $releasever系统版本比如7
keepcache=0                                    //是否保存缓存 0代表不保存,1代表保存
debuglevel=2                                   //调试级别
logfile=/var/log/yum.log                       // 日志文件位置
exactarch=1                                    //是否允许不同版本的rpm安装
obsoletes=1                                    //update 的一个参数是否可以允许旧版本的运行
gpgcheck=1                                     //验证秘钥
plugins=1                                      //是否允许插件1代表可以
installonly_limit=5                            //保存几个内核 5代表5bugtracker_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

yum配置文件.png

YUM仓库配置文件

/etc/yum.repos.d/*.repo ###yum配置文件所在地

[root@localhost etc]#ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo

YUM仓库有三种安装源

[xxxx]###指定文件名称

name=xxxx ### 指定yum仓库名称编译

baseurl=file:// 本地源

        ftp:// <FTP服务地址> FTP源

        http:// https://<URL地址> 在线源

enabled=1

gpgcheck=0

拓展

查询软件包
yum [软件名]
yum info[软件名]
yum search <关键词
yum whatprovldes <关键词>

1.创建本地安装源

1.切换到/etc/yum.repos.d/ ,将里面的自带文件都移走。

[root@localhost etc]#cd /etc/yum.repos.d/  ##切换到/etc/yum.repos.d/文件
[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 AAA  ##创建新文件AAA
[root@localhost yum.repos.d]#mv *.repo AAA   ##将以.repo结尾的文件都移动到AAA文件下

2.创建新YUM仓库文件

[root@localhost yum.repos.d]#vim djq.repo  ##新创YUM仓库文件
[djq]  
name=djq  ##设置文件名称
baseurl=file:///mnt  ##设置链接地址,file://是固定格式,指向/mnt
enabled=1  ##开启此YUM源
gpgcheck=0  ##无需验证公钥

新建file路径.png

3.清理缓存并安装软件

[root@localhost yum.repos.d]# yum clean all   //清理yum缓存  
[root@localhost yum.repos.d]# yum makecache   //重新建立元数据 
[root@localhost yum.repos.d]# yum list         //查看可安装的软件列表  
[root@localhost yum.repos.d]# yum install dhcp -y   //yum安装dhcp测试是否成功

2.搭建阿里云仓库(http方式外网环境)

1.切换到 /etc/yum.repos.d/目录,将自带的仓库文件移走。

[root@localhost etc]#cd /etc/yum.repos.d/ ##切换到/etc/yum.repos.d/文件
[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 AAA ##创建新文件AAA 
[root@localhost yum.repos.d]#mv *.repo AAA ##将以.repo结尾的文件都移动到AAA文件下

2.新建阿里云仓库

name=ali
[ali]
name=ali
#baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/     //开启哪个版本都可以正常使用,这边主要解释变量的作用
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=0

[epel]         //epel源仓库  name=epel
name=epel
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
gpgcheck=0   
[update]            //更新包仓库
name=update                      
baseurl=https://mirrors.aliyun.com/centos/7/updates/x86_64/
gpgcheck=0

3.清理缓存并安装软件

[root@localhost yum.repos.d]# yum clean all   //清理yum缓存  
[root@localhost yum.repos.d]# yum makecache   //重新建立元数据 
[root@localhost yum.repos.d]# yum list         //查看可安装的软件列表  
[root@localhost yum.repos.d]# yum install dhcp -y   //yum安装dhcp测试是否成功

http方式搭建云仓库

此方法多用于内网

服务端:192.168.132.5

客户端:192.168.132.6

搭建步骤:

1.服务端安装httpd服务。

[root@localhost ~]# yum install httpd -y

1.png

2.服务端切换到/var/www/html/ 目录,新建子目录djq,并将光驱挂载到djq目录下

[root@localhost ~]# cd /var/www/html       //切换目录  
[root@localhost html]# ls 

[root@localhost html]# mkdir djq         //新建目录djq

[root@localhost html]# mount /dev/sr0 ./djq   //将光驱挂载到djq目录下  mount: /dev/sr0 写保护,将以只读方式挂载 
[root@localhost html]# ls ./djq
CentOS_BuildTag GPL       LiveOS   RPM-GPG-KEY-CentOS-7  EFI             images   Packages RPM-GPG-KEY-CentOS-Testing-7  EULA             isolinux repodata TRANS.TBL

2.png

3.关闭防火墙,启动httpd服务

[root@localhost html]# systemctl stop firewalld   ##关闭防火墙
[root@localhost html]# setenforce 0
[root@localhost html]# systemctl start httpd  ##开启httpd服务

关闭防火墙.png

4.客户端切换到/etc/yum.repos.d/目录,新建文件夹,将默认的yum仓库文件移动到该目录下。编写新的仓库文件

[root@192 ~]# cd /etc/yum.repos.d       //客户端切换目录  
[root@192 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@192 yum.repos.d]# mkdir bak       //新建文件夹  [root@192 yum.repos.d]# mv *.repo bak   //将默认的仓库文件移动到该文件夹下  
[root@192 yum.repos.d]# ls  bak  
[root@192 yum.repos.d]# vim http.repo     //编写新的仓库文件  [http] 
name=http 
baseurl=http://192.168.132.5/dqj 
enabled=1  
gpgcheck=0

移动文件.png

编写新的yum.png

5.清理yum缓存,重新建立元数据。并测试使用yum能否成功安装软件包

[root@localhost yum.repos.d]# yum clean all && yum makecache
已加载插件:fastestmirror, langpacks
正在清理软件源: http
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
已加载插件:fastestmirror, langpacks
http                                                     | 3.6 kB     00:00     
(1/4): http/group_gz                                       | 156 kB   00:00     
(2/4): http/filelists_db                                   | 3.1 MB   00:00     
(3/4): http/primary_db                                     | 3.1 MB   00:00     
(4/4): http/other_db                                       | 1.2 MB   00:00     
Determining fastest mirrors
元数据缓存已建立

测试yum.png

ftp测试yum.png

ftp方式搭建云仓库

ftp方式搭建云仓库,在外网和内网的环境下都可以使用,但多用于内网。

服务端:192.168.132.5

客户端:192.168.132.6

1.服务端安装vsftpd服务

[root@localhost ~]# yum install vsftpd -y

安装vsftpd.png

服务端切换到 /var/ftp/ 目录下新建一个子目录djq,并将光驱挂载到djq目录下

[root@localhost yum.repos.d]# cd /var/www/html

[root@localhost html]# ls
djq

[root@localhost html]# mount /dev/sr0 ./djq
mount: /dev/sr0 写保护,将以只读方式挂载


mount: /dev/sr0 已经挂载或 /var/www/html/djq 忙
   /dev/sr0 已经挂载到 /run/media/root/CentOS 7 x86_64 上
   /dev/sr0 已经挂载到 /var/www/html/djq 上

挂载.png

3.服务端开启vsftpd服务,关闭防火墙和selinux

[root@localhost ftp]# systemctl start vsftpd  ##开启vsftpd服务
[root@localhost ftp]# systemctl stop firewalld  ##关闭防火墙
[root@localhost ftp]# setenforce 0

启动服务,关闭防火墙.png

4.客户端安装ftp程序,测试ftp服务是否正常

[root@192 ~]# cd /etc/yum.repos.d     //切换目录 

[root@192 yum.repos.d]# ls  bak2            
CentOS-Debuginfo.repo CentOS-Sources.repo  CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo  CentOS-CR.repo   CentOS-Media.repo  
[root@192 yum.repos.d]# mkdir wry      //新建文件夹  
[root@192 yum.repos.d]# mv *.repo wry   //将默认的仓库文件移动到该目录下 
[root@192 yum.repos.d]# ls  
wry
[root@192 yum.repos.d]# vim ftp.repo     //编写新的仓库文件 
[ftp]  
name=ftp 
baseurl=ftp://192.168.132.5/djq     //路径指向服务端的/var/ftp/djq/目录 
enabled=1 
gpgcheck=0

移动源文件.png

3.png

6.清理yum缓存,重新建立元数据。并测试使用yum能否成功安装软件包

[root@localhost yum.repos.d]# yum clean all && yum makecache
已加载插件:fastestmirror, langpacks
正在清理软件源: ftp
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
已加载插件:fastestmirror, langpacks
ftp                                                      | 3.6 kB     00:00     
(1/4): ftp/group_gz                                        | 156 kB   00:00     
(2/4): ftp/filelists_db                                    | 3.1 MB   00:00     
(3/4): ftp/primary_db                                      | 3.1 MB   00:00     
(4/4): ftp/other_db                                        | 1.2 MB   00:00     
Determining fastest mirrors
元数据缓存已建立
[root@localhost yum.repos.d]# yum install httpd -y

4.png

yum 命令仅下载安装包

方式一:

yum install --downloadonly mariadb
#下载下来的安装包都是放在 /var/cache/yum/x86_64/7/ 目录下

方式二:

yumdownloader --destdir=/opt mariadb mariadb-server
#yumdownloader 仅下载指定软件包,参数 --destdir 是用来指定存放下载的安装包的目录

NFS共享服务

NFS简介

NFS(Network File System 网络文件服务),是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。

NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。(远端过程调用:自己没有这种功能,调用别人的功能) NFS 也是 NAS 存储 设备必然支持的一种协议,以完成远程到本地的映射过程。

在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。

NFS的特点:

  • 采用TCP/IP传输网络文件
  • 安全性低
  • 简单易操作
  • 适合局域网环境

NFS的原理

nfs原理.png

·NFS网络文件系统

·依赖于RPC(远端过程调用)端口号:111

·需要安装nfs-utils、rpcbind软件包

·系统服务:nfs、rpcbind nfs端口号:2049

·共享配置文件:/etc/exports

nfs共享存储.png

由于nfs没有认证机制,且是明文传输,所以安全性较差,一般是在局域网环境使用

sync 写入数据会同时写入内存和硬盘(保证数据安全,不会丢失,写入会受到硬盘io性能的影响,可能会影响读写速度,)

async 写如数据时会在写到内存的缓冲区里,然后根据系统同步策略在刷新到硬盘中

NFS常用参数

参数作用
ro只读rw读写sync同步写入。同时将数据写入到内存与硬盘中,保证不丢失数据
async异步写入。优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
root_squash当NFS客户端以root访问时,映射为NFS服务器的匿名用户
no_root_quash当NFS客户端以root访问时,映射为NFS服务器的root用
all_squash无论NFS客户端使用什么身份登录,都映射为NFS服务器的匿名用户
no_all_squash(默认)访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
anonuid=< UID>指定匿名访问用户的本地用户UID,默认为nfsnobody(65534)
anongid=< GID>指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534)

在文件服务器使用 NFS 发布共享资源

服务端:192.168.132.5

客户端:192.168.132.6

实验步骤

#1.关闭防火墙和selinux 
[root@localhost ~]# systemctl stop firewalld  [root@localhost ~]# setenforce 0  setenforce: SELinux is disabled  ​ 
#2.安装nfs-utils和rpcbind软件包  
[root@localhost ~]# yum install nfs-utils rpcbind -y  ​ 
#3.新建共享目录,在目录内创建文件 
[root@localhost ~]# mkdir /share  
[root@localhost ~]# touch /share/d1.txt  ​
#4.编辑nfs配置文件  
[root@localhost ~]# vim /etc/exports 
/share  192.168.132.0/24  ​  
#5.启动两个服务,查看详细的nfs信息 
[root@localhost ~]# systemctl start nfs  [root@localhost ~]# systemctl start rpcbind  [root@localhost ~]# showmount -e         //查看本机发布的NFS共享目录 
Export list for localhost.localdomain:  /share 192.168.72.0/24 
[root@localhost ~]# exportfs -v       //查看NFS共享目录的详细信息 
/share          192.168.132.0/24(ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)

5.png

允许这个网段共享.png

2个服务.png

2.客户端设置

 #1.检查nfs-utils和rpcbind两个软件是否已安装。
[root@localhost ~]# rpm -q rpcbind 
rpcbind-0.2.0-42.el7.x86_64
[root@localhost ~]# rpm -q nfs-utils 
nfs-utils-1.3.0-0.48.el7.x86_64
#2.将服务端的共享目录/share,挂载到本地的/mnt目录下。
[root@localhost ~]# mount 192.168.132.5:/share /mnt
[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        70G  3.8G   67G    6% /
devtmpfs                devtmpfs  897M     0  897M    0% /dev
tmpfs                   tmpfs     912M     0  912M    0% /dev/shm
tmpfs                   tmpfs     912M  9.1M  903M    1% /run
tmpfs                   tmpfs     912M     0  912M    0% /sys/fs/cgroup
/dev/sda1               xfs       4.0G  179M  3.9G    5% /boot
tmpfs                   tmpfs     183M  4.0K  183M    1% /run/user/42
tmpfs                   tmpfs     183M   44K  183M    1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
192.168.132.5:/share    nfs4       70G  3.7G   67G    6% /mnt
#3.查看共享目录内的文件
[root@localhost ~]# ls /mnt
d1.txt

6.png

3、测试在服务端的共享目录中新建文件d2,观察客户端能否查看到

服务端
root@localhost ~]# cd /share  ##切换到share目录下
[root@localhost share]# touch d2  ##创建d2文件
[root@localhost share]# ls  ##查看
d1.txt  d2

客户端查看挂载到内的文件
[root@localhost ~]# ls /mnt
d1.txt  d2

拓展

强制卸载 NFS:umount -lf 挂载设备/挂载点

  • 如果服务器端NFS服务突然间停掉了,而客户端正在挂载使用时,在客户端就会出现执行 df -h 命令卡死的现象。这个时候直接使用umount 命令是无法直接卸载的,需要加上 -lf 选项才能卸载