文章目录
一,yum
1. yum是什么
YUM(Yellowdog Updater, Modified)源是一个用于管理和安装RPM软件包的仓库,主要用于Red Hat系列的Linux发行版,如CentOS、Fedora和Red Hat Enterprise Linux。YUM源包含了预编译的软件包和它们的依赖关系,可以方便地安装、更新和管理系统中的软件。
2. 三种软件仓库的提供方式
2.1 本地目录:file://
2.2 FTP服务:ftp:// …
2.3HTTP服务:http://.
3. yum 命令
3.1 基本操作命令
命令 | 用途 |
---|---|
yum -y install [package_name] | 安装、升级软件包,-y |
选项表示自动确认 | |
yum -y remove [package_name] | 卸载软件包,可自动解决其依赖关系 |
yum -y update [package_name] | 升级软件包 |
yum list | 查询软件包列表 |
yum list installed | 查询系统中已安装的软件包 |
yum list available | 查询仓库中尚未安装的软件包 |
yum list updates | 查询可以升级版本的软件包 |
3.2 RPM包搜索
命令 | 用途 |
---|---|
yum search [keyword] | 根据关键词搜索可用的软件包 |
`yum list | grep “[keyword]”` |
yum info [package_name] | 查询软件包的描述信息 |
yum search all [keyword] | 在所有信息中搜索包含指定关键词的软件包 |
yum whatprovides [command] | 查询指定命令属于哪个软件包 |
3.3 下载RPM包而不安装
命令 | 用途 |
---|---|
yum install [package_name] -y --downloadonly | 仅下载软件包而不安装 |
yum reinstall -y [package_name] --downloadonly | 下载已安装过的rpm包 |
yum install [package_name] -y --downloadonly --downloaddir=/tmp/ | 下载RPM包到指定目录 |
3.4 历史记录
命令 | 用途 |
---|---|
yum history | 查看历史记录 |
yum history list | 列出最近的历史 |
yum history info [id] | 列出某次的详细信息 |
yum history undo [id] | 撤销某次更改 |
yum history help | 查看帮助 |
yum history redo [id] | 重新执行序号里的操作 |
3.5 示例
示例命令 | 用途 |
---|---|
yum search vim | 搜索包含’vim’关键字的软件包 |
`yum list | grep “vim”` |
yum info httpd | 显示httpd软件包的详细信息 |
yum search all httpd | 在所有信息中搜索包含’httpd’关键词的软件包 |
yum whatprovides netstat | 查询netstat命令属于哪个软件包 |
yum install wget -y --downloadonly | 仅下载wget软件包而不安装 |
yum history list | 列出最近的历史 |
yum history info 5 | 列出ID为5的详细信息 |
yum history undo 5 | 撤销ID为5的更改 |
yum history redo 5 | 重新执行ID为5的操作 |
4. 部署
4.1 配置本地Yum仓库步骤
1 . 创建本地仓库配置文件:
cd /etc/yum.repos.d/ vim local.repo
2 . 在local.repo
文件中添加以下内容:
[local] #仓库类别 name=local #仓库名称 baseurl=file:///mnt #指定URL 访问路径为光盘挂载目录 enabled=1 #开启此yum源,此为默认项,可省略 gpgcheck=0 #不验证软件包的签名
3 . 将光盘挂载到/mnt
目录下:
mount /dev/sr0 /mnt #把光盘挂载到/mnt目录下(前提虚拟机是光盘挂载)
4 . 清理Yum缓存并更新:
yum clean all && yum makecache
5 . 检查仓库列表:
yum repolist
4.2 配置ftp源
4.2.1服务端配置
1. 安装vsftpd服务端软件
# 检查是否已安装vsftpd rpm -qa | grep vsftpd # 安装vsftpd yum -y install vsftpd
2. 创建并制作Yum远程FTP站点的源
# 创建挂载目录 mkdir /var/ftp/centos7 # 挂载光盘到指定目录 mount /dev/sr0 /mnt # 复制光盘内容到FTP目录 cp -rf /mnt/* /var/ftp/centos7/ & # 创建目录用于存放其他软件包 mkdir /var/ftp/other # 生成仓库数据文件 cd /var/ftp/other/ createrepo -g /mnt/repodata/repomd.xml ./
3. 启动FTP服务
# 启动vsftpd服务 systemctl start vsftpd # 设置开机自启动 systemctl enable vsftpd
4.2.2 客户端配置
1. 创建远程Yum源的配置文件
vi /etc/yum.repos.d/centos7.repo
2. 配置文件内容
[centos7] name=centos7 baseurl=ftp://xxx.xxx.xxx.xxx/centos7 enabled=1 gpgcheck=1 gpgkey=ftp://xxx.xxx.xxx.xxx/centos/RPM-GPG-KEY-CentOS-7 [other] name=other baseurl=ftp://xxx.xxx.xxx.xxx/other enabled=1 gpgcheck=0
3. Yum安装软件验证结果
# 清理Yum缓存 yum clean all # 生成新的Yum缓存 yum makecache # 列出可用仓库 yum repolist # 安装测试软件包 yum -y install [package_name]
- 服务器配置:
安装vsftpd服务端软件:
rpm -qa | grep vsftpd yum -y install vsftpd
创建并制作Yum远程FTP站点的源:
mkdir /var/ftp/centos7 mount /dev/sr0 /mnt cp -rf /mnt/* /var/ftp/centos7/ & mkdir /var/ftp/other cd /var/ftp/other/ createrepo -g /mnt/repodata/repomd.xml ./
启动FTP服务:
systemctl start vsftpd systemctl enable vsftpd
- 客户端配置:
- 创建远程Yum源的配置文件:
vi /etc/yum.repos.d/centos7.repo
配置文件内容:
[centos7] name=centos7 baseurl=ftp://192.168.xxx.xxx/centos7 enabled=1 gpgcheck=1 gpgkey=ftp://192.168.xxx.xxx/centos/RPM-GPG-KEY-CentOS-7 GPG 公钥文件的位置 [other] name=other baseurl=ftp://192.168.xxx.xxx/other ftp源地址 enabled=1 启用此软件仓库 gpgcheck=0 验证软件包的签名
4.3 设置本地 HTTP 源步骤:
1 . 安装 HTTP 服务和创建目录:
首先确保安装了 httpd
服务,并创建好存放镜像文件的目录。
yum -y install httpd mkdir -p /var/www/html/centos7
2 . 挂载光盘镜像并复制文件:
假设你的光盘设备是 /dev/sr0
,执行以下命令挂载镜像并复制文件到 HTTP 服务的目录下。
mount /dev/sr0 /mnt # 挂载光盘镜像到 /mnt 目录 cp -rf /mnt/* /var/www/html/centos7/ # 复制镜像文件到 HTTP 服务目录
3 . 生成 YUM 源索引:
进入存放软件包的目录,使用 createrepo
命令生成 YUM 源索引文件。
createrepo /var/www/html/centos7/
这将在 /var/www/html/centos7/
目录下生成 repodata
子目录,包含软件包的索引信息。
4 . 创建 YUM 源配置文件:
在 /etc/yum.repos.d/
目录下创建一个 .repo
文件,例如 centos7.repo
,内容如下:
[centos7] name=CentOS 7 Local RepositoryYUM 源的名称 baseurl=http://192.168.xxx.xxx/centos7HTTP 服务的地址,应指向你设置的本地 HTTP 源路径 enabled=1设置为 1 表示启用该 YUM 源 gpgcheck=0设置为 0 表示不检查 GPG 签名
5 . 重启 HTTP 服务:
为了确保设置生效,重新启动 httpd
服务。
systemctl restart httpd
6 . 清理和更新 YUM 缓存:
最后,清除旧的 YUM 缓存并更新本地 YUM 缓存。
yum clean all yum makecache
7 . 测试 YUM 源:
执行以下命令验证新配置的 YUM 源是否可用。
yum repolist
5. 阿里源
下载地址:wget http://mirrors.aliyun.com/repo/Centos-7.repo vim CentOS7-Base-aliyun.repo #编辑阿里云yum 网络源 [base] name=CentOS-$releasever - Base - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #released updates [updates] name=CentOS-$releasever - Updates - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/ gpgcheck=1 enabled=0 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
二,nfs
NFS (Network File System) 是一种分布式文件系统协议,允许在网络上的不同计算机系统之间共享文件和目录。它允许一个计算机系统(称为 NFS 服务器)将其文件系统中的部分内容以网络共享给其他计算机系统(称为 NFS 客户端)。这种共享使得多个计算机可以像访问本地文件一样访问远程系统上的文件。
NFS 也是 NAS 存储 设备必 然支持的一种协议 NAS存储: NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,以完成远程到本地的映射 过程。在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。 手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。
nfs端口号2049 RPC端口号111 特点: 采用TCP/IP传输网络文件 安全性低 简单易操作 适合局域网环境 常见的文件服务器有NFS、GFS(gluster fs)、FastDFS NFS系统和Windows网络共享、网络驱动器类 似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站,会用到更复杂的分布 式文件系统FastDFS、glusterfs、HDFS、ceph。
1. nfs共享资源
1.1 实现多台服务器之间数据共享
1.2 实现多台服务器之间数据一致
2. 客户端访问nfs
1、假如访问的是NFS客户端,先调用不同的函数(例如Read()函数,读功能、Write()函数,写功能、 Create()函数,创建功能、Remove()函数、删除功能、Rename()函数,重命名功能)对数据进行处理。 2、调用完函数后,首先NFS客户端会建立TCP连接,通过TCP/IP的方式传递给NFS服务端,连上远端的 服务器。
3、接着NFS服务端接收到请求后,NFS服务器会做3步系列操作(环环相扣,先映射端口,然后验证是 否能登录服务器,最后验证文件使用权限),如下: 首先,调用portmap进程进行端口映射。 接着,调用Rpc.nfsd进程来验证NFS客户端是否拥有对应的权限连接NFS服务端。 最后,调用Rpc.mount进程来验证客户端是否拥有对应的文件使用权限;
4、Portmap进程实现用户映射和压缩
5、最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
客户端发起查看file信息的指令(ls file)给内核,内核通过NFS模块得知此文件并不是本地文件系统中 的文件,而是在远程NFS主机上的一个文件 客户端主机的内核通过RPC协议把查看file信息的指令(系统调用)封装成rpc请求通过TCP的111端口发 送给NFS服务端主机的portmapper NFS服务端主机的portmapper(RPC服务进程)告诉客户端说NFS服务端的mountd服务在某某端口 上,你去找它验证 因为mountd在提供服务时必须要向portmapper注册一个端口号,所以portmapper是知道其工作于哪 个端口的 客户端得知服务端的mountd进程端口号后,通过已知的服务端mountd端口号请求验证 mountd收到验证请求后验证发起请求的客户端是否在允许访问此NFS文件系统的客户端列表中,在则允 许访问(发放一个令牌,持令牌去找nfsd),否则拒绝访问 验证通过后客户端持mountd发放的令牌去找服务端的nfsd进程,请求查看某文件 服务端的nfsd进程发起本地系统调用,向内核请求查看客户端要查看的文件的信息 服务端的内核执行nfsd请求的系统调用,并将结果返回给nfsd服务
3 . 配置
3.1 配置步骤
1、安装nfs和rpcbind软件
2、修改配置文件设置共享
3、创建共享目录
4、开启服务
5、客户端验证共享目录可访问
rpm -q rpcbind nfs-utils yum install -y nfs-utils rpcbind vim /etc/exports #NFS 的配置文件为/etc/exports,文件内容默认为空(无任何共享) /opt/web 192.168.10.0/24(rw,sync,no_root_squash) 常用选项: rw 表示允许读写 ro 表示为只读 sync 表示同步写入到内存与硬盘中 no_root_squash 表示当客户机以root身份访问时赋予本地root权限(默认是 root_squash),如果不加那么客户端无法在里面编辑或写入文件,因为默认以nfsnobody的权限 root_squash 表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户 其它常用选项: all_squash 所有访问用户都映射为匿名用户或用户组 async 将数据先保存在内存缓冲区中,必要时才写入磁盘,速度快但会丢失数据 subtree_check(默认) 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限 no_subtree_check 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可 以提高效率 systemctl start rpcbind //需要先启动rpc服务,因为nfs要向rpc注册端口 systemctl start nfs systemctl enable rpcbind systemctl enable nfs [root@localhost web]# netstat -anpu | grep rpc udp 0 0 0.0.0.0:111 0.0.0.0:* 24525/rpcbind [root@localhost web]# rpcinfo -p localhost //查看nfs向rpc注册的端口信息 program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 55627 status …… [root@localhost web]# exportfs -v //验证结果 /web 192.168.245.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squ ash,no_all_squash) exportfs -r //刷新结果 [root@localhost web]# showmount -e localhost //验证共享 Export list for localhost: /web 192.168.245.0/24 切换到客户端: [root@localhost ~]# yum install -y nfs-utils rpcbind [root@localhost ~]# showmount -e 192.168.10.17 //客户端验证共享 Export list for 192.168.245.100: /web 192.168.245.0/24 [root@localhost ~]# [root@localhost ~]# [root@localhost ~]# yum -y install httpd [root@localhost ~]# mount -t nfs 192.168.10.17:/web /var/www/html //将共享目录 挂载到网页目录 [root@localhost ~]# systemctl start httpd //启动web服务 [root@localhost ~]# curl 127.0.0.1 //成功访问主页内容 hello world! [root@localhost ~]# echo "this is kgc " >> /var/www/html/index.html //客户端修 改主页文件 [root@localhost web]# cat index.html //服务器端会同步 this is kgc nihao 同理可得,服务端写入或修改内容,客户端也会同步 df -h #查看挂载情况 修改/etc/fstab实现自动挂载: 192.168.10.17:/opt/web /var/www/html nfs defaults,_netdev 0 0 defaults,_netdev说明这是一个网络设备 注意:NFS 客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端 NFS 服务突然间停 掉了,那么在客户端就会出现执行 df -h 命令卡死的现象。这个时候使用 umount 命令是无法直接卸载 的,需要加上 -lf 才能卸载 -l 表示解除正在繁忙的文件系统,-f 表示强制。 [root@localhost web]# systemctl stop nfs //服务器端模拟nfs挂掉 [root@localhost ~]# umount /var/www/html //客户端卸载时会卡住 ^C [root@localhost ~]# umount -lf /var/www/html //加lf参数成功卸载 其他nfs文件: /var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值 /var/lib/nfs/xtab 记录曾经登录过的客户端信息