💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。![](https://i-blog.csdnimg.cn/direct/8caea840a48a4f41b41daf33ecd46af3.gif)
推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老 导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。 常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等 数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂 非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏
搞它!!!Linux构建远程YUM仓库与NFS共享存储服务
一、构建远程YUM仓库
1、YUM仓库概述
(1)、yum仓库简介
YUM(Yellow dog Updater, Modified)
基于RPM包构建的软件更新机制
可以自动解决依赖关系
所有软件包由几种的YUM软件仓库提供
在这里插入图片描述
(2)yum仓库的三种提供方式
FTP服务:ftp://… HTTP服务: http://… 本地目录:file://…
(3)yum配置文件
为客户机指定YUM仓库位置 yum的配置文件
仓库设置:/etc/yum.repos.d/.repo 日志文件:/var/log/yum.log 配置文件:/etc/yum.repo.d/.repo
代码语言:javascript
复制
[CentOS7-base] #源名称,必填
name=CentOS-$releasever-base #源描述,可以不填,但是会有提示
baseurl=file:///misc/cd/ #本地的光盘文件,可以有多个地址。必填https://mirrors.aliyun.com/centos/7.3.1611/os/x86_64/
gpgcheck=1 #是否开启校验,在yum.conf中已经定义它默认值为1
enabled=1 #是否禁用此yum源,默认为
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#如果开启yum源包校验,则需要导入RPM公钥,此处只是在系统没有导入rpm公钥时候进行安装
#这里相当于rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
今天小编就带大家玩ftp,话不多说,开干!
(4)配置远程ftp YUM源
第一步:服务端将centos7光盘镜像挂载到服务端(光盘镜像要连接状态)
代码语言:javascript
复制
[root@server ~]# mount /dev/sr0 /mnt '将镜像挂载到本地'
mount: /dev/sr0 is write-protected, mounting read-only
[root@server ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 20G 3.1G 17G 16% /
...省略部分内容
/dev/sr0 iso9660 4.3G 4.3G 0 100% /mnt
[root@server ~]# ls /mnt '挂载成功'
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
第二步:进入服务器站点,将镜像复制到文件夹
代码语言:javascript
复制
[root@server var]# yum install vsftpd -y '安装vsftpd'
...省略部分内容[root@server var]# cd ftp
[root@server ftp]# ls
pub
[root@server ftp]# pwd '进入到ftp的主配置文件'
/var/ftp
[root@server ftp]# mkdir centos7 '在站点下创建文件夹,存放镜像'
[root@server ftp]# ls
centos7 pub
[root@server ftp]# ls centos7
[root@server ftp]# cp -rf /mnt/* centos7/& '将镜像强制复制到centos7中,并在后台运行'
[1] 9301
[root@server ftp]# jobs '查看后台运行程序'
[1]+ Running cp -i -rf /mnt/* centos7/ &
[root@server ftp]# mkdir other '创建yum源的索引目录,用于创建repodata数据文件'
[root@server ftp]# ls
centos7 other pub
'若已将作为源发布的其他 rpm 安
装包文件存放到/var/ftp/other 目录下,则可执行以下操作为其创建 repodata 数据。'
[root@server ftp]# createrepo -g /mnt/repodata/repomd.xml other'以现有的repodata目录为样板 '[root@server ftp]# ls centos7
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@server ftp]# ls other/repodata
第三步:服务端开启vsftpd服务 21端口负责连接服务器 20端口负责上传和下载
代码语言:javascript
复制
[root@server ~]# systemctl start vsftpd '开启vsftp文件共享服务'
[root@server ~]# netstat -ntap | grep 21
tcp6 0 0 :::21 :::* LISTEN 12216/vsftpd
[root@server ~]# netstat -ntap | grep 20vsftpd中21端口负责连接服务器20端口负责上传和下载[root@server ~]# systemctl stop firewalld.service '关闭防火墙'
[root@server ~]# setenforce 0 '关闭核心防护'
第四步:进入客户端配置:安装ftp服务,查看是否可以看到站点 感受一下ftp的神奇之处
代码语言:javascript
复制
[root@client ~]# yum install ftp -y
[root@client ~]# ftp 192.168.197.172 '使用ftp用匿名方式登录服务端'
Connected to 192.168.197.172 (192.168.197.172).
220 (vsFTPd 3.0.2)
Name (192.168.197.172:root): ftp '输入名称'
331 Please specify the password.
Password: '输入root用户登录密码'
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls '发现可以查看到站点中的文件'
227 Entering Passive Mode (192,168,197,172,88,1).
150 Here comes the directory listing.
drwxr-xr-x 8 0 0 220 Nov 25 03:15 centos7
drwxr-xr-x 3 0 0 22 Nov 25 03:16 other
drwxr-xr-x 2 0 0 6 Oct 30 2018 pub
226 Directory send OK.
ftp> bye
221 Goodbye.
第五步:构建yum源之前 将其原有的配置文件打包带走,接下来自己手动编写一个 将所有的repo文件移动到文件夹中
代码语言:javascript
复制
[root@client ~]# cd /etc/yum.repos.d/ 'yum配置文件目录'
[root@client 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@client yum.repos.d]# mkdir bak
[root@client yum.repos.d]#mv *.repo bak ' 将所有以repo结尾的文件移动到bak的文件夹内 '
[root@client 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
第六步:清空缓存,自己写一个repo文件,并将秘钥复制到其中 主角来了 ,前面的都是铺垫,这个一定要记住,
代码语言:javascript
复制
[root@client yum.repos.d]# vim centos7.repo
[base] '//仓库类别'
name=centos7.packages '//仓库名称(说明) '
baseurl=ftp://192.168.110.133/centos7 '//URL 访问路径 '
enabled=1 '//启用此软件仓库 '
gpgcheck=1 '//验证软件包的签名 因为这里不像本地yum毕竟是远程yum仓库 所以要验证一下以防被其他人篡改'
gpgkey=ftp://192.168.110.133/centos7/RPM-GPG-KEY-CentOS-7
'将服务端复制的秘钥粘贴到此,//GPG 公钥文件的位置 '[other]
name=other.packages
baseurl=ftp://192.168.110.133/other
enabled=1
gpgcheck=0 '//不验证软件包的签名 '
'在服务端查看秘钥并复制'
[root@server ftp]# ls centos7 '服务端查看'
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
第七步:此时yum list 已经生效(可以安装安装软件包和进行更新相关操作了)
yum update 更新软件包,连内核一起更新
yum upgrade 只更新软件包,但不更新内核
(5)软件包查询
查询软件包 yum list [软件名]… yum info [软件名]… yum search <关键词>… 查询软件包组 yum grouplist [包组名]… yum groupinfo <包组名>…
(6)安装、升级软件
yum install [软件名] yum groupinstall <包组名>
升级软件
yum update
yum groupdate
yum update 更新软件包,连内核一起更新
yum upgrade 只更新软件包,但不更新内核
卸载软件
yum remove <软件名>… yum groupremove <包组名>…
二、NFS共享存储服务
1、NFS 网络文件系统(Network File System)
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;
2、NFS挂载原理
在这里插入图片描述
如上图示:
当我们在NFS服务器设置好一个共享目录/home/public后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。挂载后,NFS客户端查看磁盘信息命令:#df –h。
既然NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间要传输数据就要有想对应的网络端口,NFS服务器到底使用哪个端口来进行数据传输呢?基本上NFS这个服务器的端口开在2049,但由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口;既然是随机的那么客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?这时就需要通过远程过程调用(Remote Procedure Call,RPC)协议来实现了!
3、配置NFS服务
NFS软件很简单,主要配置文件:/etc/exports,默认这个里面内容是空的,如果没有这个文件,可以使用vim主动建立这个文件。至于NFS服务器的搭建也很简单,只要编辑好主要配置文件/etc/exports之后,先启动rpcbind(若已经启动了,就不要重新启动),然后再启动nfs,NFS就成功了
(1)第一步:格式化并挂载刚添加的硬盘
格式化磁盘步骤省略,如有疑问查看我之前博客
代码语言:javascript
复制
[root@server ~]# vim /etc/fstab
[root@server ~]# mount -a
[root@server ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 20G 4.1G 16G 21% /
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.0M 903M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda5 xfs 10G 52M 10G 1% /home
/dev/sda1 xfs 6.0G 174M 5.9G 3% /boot
tmpfs tmpfs 183M 8.0K 183M 1% /run/user/42
tmpfs tmpfs 183M 0 183M 0% /run/user/0
/dev/sdb1 xfs 20G 33M 20G 1% /mnt
(2)第二步:安装nfs-utils rpcbind,并设置为开机自启
代码语言:javascript
复制
[root@server ~]# yum install nfs-utils rpcbind -y
[root@server ~]# systemctl enable 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 enable rpcbind.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rpcbind.service to /usr/lib/systemd/system/rpcbind.service.
(3)第三步:设置共享目录,启动服务并关闭防护墙
代码语言:javascript
复制
[root@server ~]# vim /etc/exports
/mnt 192.168.133.0/24(rw,sync,no_root_squash)
[root@server ~]# systemctl start nfs
[root@server ~]# systemctl start rpcbind
[root@server ~]# netstat -ntap | grep rpc
tcp 0 0 0.0.0.0:35312 0.0.0.0:* LISTEN 14124/rpc.statd
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 14125/rpc.mountd
tcp6 0 0 :::20048 :::* LISTEN 14125/rpc.mountd
tcp6 0 0 :::58102 :::* LISTEN 14124/rpc.statd
[root@server ~]# systemctl stop firewalld.service
[root@server ~]# setenforce 0
NFS配置权限设置,即/etc/exports文件配置格式中小括号()里的参数集;
在这里插入图片描述
(4)第四步:查看本机发布的NFS共享目录
代码语言:javascript
复制
[root@server ~]# showmount -e
Export list for server:
/mnt 192.168.110.0/24
(5)第无步:进客户端,关闭防火墙,安装httpd服务
代码语言:javascript
复制
[root@client ~]# systemctl stop firewalld.service
[root@client ~]# setenforce 0
[root@client ~]# yum install httpd -y
(6)第六步:手动挂载NFS共享目录或者使用自动挂载
这里小编挂载在apache的网页配置文件上>_<
代码语言:javascript
复制
[root@client ~]# mount 192.168.110.133:/mnt /var/www/html '临时挂载'
[root@client ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 20G 4.1G 16G 21% /
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.0M 903M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda5 xfs 10G 37M 10G 1% /home
/dev/sda1 xfs 6.0G 174M 5.9G 3% /boot
tmpfs tmpfs 183M 12K 183M 1% /run/user/42
tmpfs tmpfs 183M 0 183M 0% /run/user/0
192.168.110.133:/mnt nfs4 20G 32M 20G 1% /var/www/html[root@client ~]# umount /var/www/html '取消挂载'
[root@client ~]# vim /etc/fstab '改为永久挂载'
192.168.110.133:/mnt /var/www/html nfs defausts,_netdev 0 0
[root@client ~]# mount -a '检查一下挂载情况,不提醒默认挂载成功'
[root@client ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 20G 4.1G 16G 21% /
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.0M 903M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda5 xfs 10G 37M 10G 1% /home
/dev/sda1 xfs 6.0G 174M 5.9G 3% /boot
tmpfs tmpfs 183M 12K 183M 1% /run/user/42
tmpfs tmpfs 183M 0 183M 0% /run/user/0
192.168.110.133:/mnt nfs4 20G 32M 20G 1% /var/www/html
(7)第七步:配置httpd网页并开启服务
代码语言:javascript
[root@client ~]# cd /var/www/html '进入到apache网页配置文件'
[root@client html]# ls
[root@client html]# vim index.html '编辑配置文件'
<h1>this is nfs web </h1>
[root@client html]# systemctl start httpd.service
用客户端的网址登陆