① 搭建NFS服务器(用于静态资源的存储如图片、视频、附件)
② 使用mount指定对NFS服务器进行挂载,挂载到Web服务器中
编号 | 主机名称FQDN | IP地址 | 作用 |
---|---|---|---|
1 | web.hd.cn | 192.168.1.11 | Web服务器 |
2 | nfs.hd.cn | 192.168.1.12 | NFS服务器 |
第一步:设置计算机的在主机名称
Web# hostnamectl set-hostname web.hd.cn
NFS# hostnamectl set-hostname nfs.hd.cn
第二步:设置IP地址
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=none
IPADDR=192.168.1.11 # /192.168.1.12 # /192.168.1.13
NETMASK=255.255.255.0
GATEWAY=192.168.1.2
DNS1=114.114.114.114
UUID必须是唯一的,所以要么删除,要么更改UUID的值(更改后3位)
第三步:关闭防火墙与SELinux
关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld
关闭SELinux
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
第四步:配置YUM源
# yum clean all
# yum mackecache
rpcbind : 负责NFS的数据传输,远程过程调用 tcp/udp协议 端口111
nfs-utils :控制共享哪些文件,权限管理
RPC(Remote Procedure Call Protocol):
远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,不需要了解底层网络技术的协议。
nfs-utils-1.2.3-26.el6.x86_64 nfs服务的一个脚本控制工具(服务端与客户端)
nfs4-acl-tools-0.3.3-6.el6.x86_64 acl 工具包
nfs-utils-lib-1.1.5-4.el6.x86_64 nfs 库文件
# yum install rpcbind nfs-utils -y
# rpm -q rpcbind
# rpm -aq|grep ^nfs
# rpcinfo -p localhost 查看
# vim /etc/exports (vim /etc/nfs.conf)
共享目录 共享选项
/share *(ro,sync)
/public *(ro,sync)
共享主机:
* :代表所有主机
192.168.0.0/24:代表共享给某个网段192.168.0.1 ~ 192.168.0.254
192.168.0.0/24(rw) 192.168.1.0/24(ro) :代表共享给不同网段
192.168.0.254:共享给某个IP
*.hd.cn:代表共享给某个域下的所有主机
共享选项:
ro:只读
rw:读写
sync:实时同步,直接写入磁盘(安全性最高)
async:异步,先缓存数据在内存然后再同步磁盘(效率最高,但是有丢失文件风险)
anonuid:设置访问nfs服务的用户的uid,uid需要在/etc/passwd中存在
anongid:设置访问nfs服务的用户的gid
root_squash :默认选项 root用户创建的文件的属主和属组都变成nfsnobody,其他人nfs-server端是它自己,client端是nobody。(访问NFS服务器时,映射为匿名账号)
no_root_squash:root用户创建的文件属主和属组还是root,其他人server端是它自己uid,client端是nobody。(访问NFS服务器时,映射为root管理员账号)
all_squash: 不管是root还是其他普通用户创建的文件的属主和属组都是nfsnobody
说明:
anonuid和anongid参数和all_squash一起使用。
all_squash表示不管是root还是其他普通用户从客户端所创建的文件在服务器端的拥有者和所属组都是nfsnobody;服务端为了对文件做相应管理,可以设置anonuid和anongid进而指定文件的拥有者和所属组
第一步:安装软件
# yum install rpcbind nfs-utils -y
第二步:创建一个共享目录,如/share
# mkdir /share
# vim /etc/exports
共享目录 共享选项
/share 192.168.1.0/24(rw,sync,no_root_squash)
rw 访问共享文件夹的权限
sync 表示写在缓冲区的数据会立刻同步到硬盘中,防止数据丢失
no_root_squash:root不用不需要转换身份
# systemctl start rpcbind 111端口
# rpcinfo -p localhost 查看(netstat -naput | grep 111)
# systemctl start nfs
# systemctl enable nfs
# systemctl enable rpcbind
# ss -naltp |grep 111 111端口
# yum install httpd -y
# systemctl start httpd
当Apache软件启动完毕后,会自动占用计算机的80端口。
80端口指向Web服务器的目录 => /var/www/html
所以项目源代码都可以直接存放于/var/www/html目录下
# echo "NFS实战演练" > /var/www/html/index.html
# mkdir /var/www/html/media
# mount -t nfs 192.168.1.12:/share /var/www/html/media
或
# mount.nfs 192.168.1.12:/share /var/www/html/media
永久挂载
# echo "mount -t nfs 192.168.8.137:/data1 /var/www/html/media" >> /etc/rc.local
# chmod +x /etc/rc.d/rc.local
自动挂载
#vim /etc/fstab 网络上尽量不要用这个,本地可以
192.168.8.137:/data1 /var/www/html/medie nfs4 defaults 0 0
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 5.1G 12G 30% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 28K 182M 1% /run/user/1000
/dev/sr0 4.3G 4.3G 0 100% /run/media/itheima/CentOS 7 x86_64
tmpfs 182M 0 182M 0% /run/user/0
10.1.1.12:/share 17G 5.1G 12G 30% /var/www/html/media
如果客户端没有安装nfs工具可能导致挂载失败:
yum -y install nfs-utils nfs-utils-lib nfs4-acl-tools
第一步:使用MX上传aws.mp4到/share目录(NFS服务器)
第二步:在Web服务器中,ll /var/www/html/media目录
# ll /var/www/html/media
aws.mp4
# vim /var/www/html/index.html
什么是nfs?nework file system
网络文件系统nfs ------------本地文件系统 ntfs fat32 ext4 ,xfs
nfs应用场景 network file system
nfs服务器实验
操作步骤如下:
[root@hd2 ~]# yum -y install net-tools #安装ifconfig命令
[root@hd2 ~]#ifconfig ens33 192.168.1.12
2.安装nfs服务和rpcbind服务
[root@hd2 ~]# yum -y install nfs-utils rpcbind -y
[root@hd2 ~]# rpm -qa | egrep "nfs|rpcbind"
3. 先启动rpcbind服务 监听的端口号是:111
[root@hd2 ~]# systemctl start rpcbind
root@hd2 ~]# systemctl status rpcbind|grep active
Active: active (running) since 五 2021
[root@hd2 ~]# rpcinfo -p localhost
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
4.启动nfs服务
[root@hd2 ~]# systemctl start nfs
[root@hd2 ~]# systemctl status nfs
5.设置开机自启动
[root@hd2 ~]# systemctl enable nfs
[root@hd2 ~]# systemctl enable rpcbind
7.编辑nfs的主配置文件有两个
/etc/nfs.conf /etc/exports
[root@hd2 data]#mkdir /data
[root@hd2 data]# vi /etc/exports
/data 192.168.1.0/24(rw,sync,no_root_squash)
rw表示客户端对/data目录的权限是可读可写
sync表示客户端对/data目录的写入要马上同步到磁盘,以防止数据的丢失
开始存储到内存,sync的意思是将内存的数据立刻存储到硬盘
no_root_squash: root不用不需要转换身份
什么叫异步?
写数据到缓存,直到缓存满了,才会向硬盘进行写入操作
8. 重启服务
[root@hd2 ~]# systemctl reload nfs
优雅的重启 跟重启的区别
命令上:/etc/init.d/nfs reload
重启:/etc/init.d/nfs restart
Reload 其实是不中断对外提供服务的基础上,重新加载配置文件
给客户的感觉 非常 优雅 nice
Restart 缺点是中断了对外的提供的服务,重新加载配置文件
生产环境下,一般要reload
8.测试
在服务器上自我测试共享是否成功了
[root@hd2 ~]# showmount -e localhost
Export list for localhost:
/data 192.168.1.0/24
表示测试成功,服务端配置完毕
共享权限的问题
客户端访问nfs服务器使用的账号是 nfsnobody 这个账号对于/data目录由两种权限
A.系统权限 为 只读和执行
B.nfs权限 为 可读可写
综合以上两点,默认情况下,客户端访问/data是没有写权限的。
下面是关于权限的设置
[root@hd2 ~]# grep 65534 /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
这个账号是nfs程序的默认账号
[root@hd2 ~]# chown -R nfsnobody.nfsnobody /data
接下来, 在192.168.1.11上配置nfs客户端
1.配置ip地址和yum源 并安装rpcbind
[root@hd1 ~]# mount /dev/sr0 /media/cdrom
[root@hd1 ~]# yum -y install showmount
[root@hd1 ~]# showmount -e 192.168.1.12
Export list for 192.168.1.12:
/data 192.168.1.0/24
表示测试成功了
3. 下面是挂载
[root@hd1 ~]#mkdir /data1
[root@hd1 ~]# mount -t nfs 192.168.1.12:/data /data1
[root@hd1 ~]# echo "mount -t nfs 192.168.1.12:/data /data1">>/etc/rc.local
[root@hd1 ~]# chmod +x /etc/rc.d/rc.local
测试在客户端上是否能够创建文件删除文件等
[root@hd1 ~]#cd /data1
[root@hd1 data1]# touch {1..10}
[root@hd1 data1]# ls
1 10 2 3 4 5 6 7 8 9
之后在nfs服务器上去查看一下有没有刚才创建的文件
如果有表示nfs没问题
[root@hd2 ~]# cd /data
[root@hd2 ~]#ls
1 10 2 3 4 5 6 7 8 9
实现自动挂载
[root@hd1 ~]#vim /etc/fstab
192.168.1.12:/data /data1 nfs4 defaults 0 0
[root@hd1 ~]#mount -a
18% /boot
tmpfs 182M 28K 182M 1% /run/user/1000
/dev/sr0 4.3G 4.3G 0 100% /run/media/itheima/CentOS 7 x86_64
tmpfs 182M 0 182M 0% /run/user/0
10.1.1.12:/share 17G 5.1G 12G 30% /var/www/html/media
如果客户端没有安装nfs工具可能导致挂载失败:
yum -y install nfs-utils nfs-utils-lib nfs4-acl-tools
第一步:使用MX上传aws.mp4到/share目录(NFS服务器)
第二步:在Web服务器中,ll /var/www/html/media目录
# ll /var/www/html/media
aws.mp4
# vim /var/www/html/index.html
nft服务器操作
在192.168.8.137上配置nfs服务端
1.环境准备
关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld
关闭SELinux
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
2.配置YUM源
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# yum clean all
# yum makecache
# yum -y install net-tools #安装ifconfig命令
#ifconfig ens33 192.168.1.12
3.安装nfs服务和rpcbind服务
# yum -y install nfs-utils rpcbind -y
# rpm -qa | egrep "nfs|rpcbind"
# rpm -q rpcbind
# rpm -aq|grep ^nfs
# rpcinfo -p localhost 查看
4. 先启动rpcbind服务 监听的端口号是:111
# systemctl start rpcbind
# systemctl status rpcbind|grep active
Active: active (running) since 五 2021
# rpcinfo -p localhost
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
启动nfs服务
# systemctl start nfs
# systemctl enable nfs
# systemctl enable rpcbind
5.编辑nfs的主配置文件有两个
/etc/nfs.conf /etc/exports
# mkdir /data
# vi /etc/exports
/data 192.168.8.0/24(rw,sync,no_root_squash)
(这里写的是网段)
rw表示客户端对/data目录的权限是可读可写
sync表示客户端对/data目录的写入要马上同步到磁盘,以防止数据的丢失
开始存储到内存,sync的意思是将内存的数据立刻存储到硬盘
no_root_squash: root不用不需要转换身份
什么叫异步?
写数据到缓存,直到缓存满了,才会向硬盘进行写入操作
6. 重启服务
# systemctl reload nfs
优雅的重启 跟重启的区别
命令上:/etc/init.d/nfs reload
重启:/etc/init.d/nfs restart
Reload 其实是不中断对外提供服务的基础上,重新加载配置文件
给客户的感觉 非常 优雅 nice
Restart 缺点是中断了对外的提供的服务,重新加载配置文件
生产环境下,一般要reload
7.测试
在服务器上自我测试共享是否成功了
# showmount -e localhost
Export list for localhost:
/data 192.168.1.0/24
表示测试成功,服务端配置完毕
共享权限的问题
客户端访问nfs服务器使用的账号是 nfsnobody 这个账号对于/data目录由两种权限
A.系统权限 为 只读和执行
B.nfs权限 为 可读可写
综合以上两点,默认情况下,客户端访问/data是没有写权限的。
下面是关于权限的设置
# grep 65534 /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
这个账号是nfs程序的默认账号
# chown -R nfsnobody.nfsnobody /data
客户机操作
在192.168.8.138上配置nfs客户端
1.配置ip地址和yum源 并安装rpcbind
ip为192.168.8.138
yum源配置为网络源
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# yum clean all
# yum makecache
# yum install -y rpcbind
# mount /dev/sr0 /media/cdrom #本地光盘做yum源,不需要
# yum -y install showmount
# showmount -e 192.168.8.137
Export list for 192.168.8.137:
/data 192.168.8.0/24
表示测试成功了
3. 下面是挂载
# mkdir /data1
# mount -t nfs 192.168.8.137:/data /data1
# echo "mount -t nfs 192.168.8.137:/data /data1" >> /etc/rc.local
# chmod +x /etc/rc.d/rc.local
测试在客户端上是否能够创建文件删除文件等
#cd /data1
# touch {1..10}
# ls
1 10 2 3 4 5 6 7 8 9
之后在nfs服务器上去查看一下有没有刚才创建的文件
如果有表示nfs没问题
[root@hd2 ~]# cd /data
[root@hd2 ~]#ls
1 10 2 3 4 5 6 7 8 9
实现自动挂载 --这个不建议使用,适合本地实验,网络中使用会有各种报错
[root@hd1 ~]#vim /etc/fstab
192.168.1.12:/data /data1 nfs4 defaults 0 0
[root@hd1 ~]#mount -a
动态主机配置协议 用来配置网络参数的一个服务(ip地址、子网掩码、网关,dns服务器)
#家里的无线路由器默认就给每一台手机自动分发ip地址参数
客户端发送DHCPdiscovery
dhcp服务器回应DHCPoffer
客户端发送DHCPrequest广播包,告知选择结果
dhcp服务器发送DHCPack包,包含完整的网络参数
三层交换机、路由器、防火墙、windows服务器、linux服务器、vmware 都可以实现此服务
配置DHCP服务器 192.168.8.138
关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld
关闭SELinux
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
配置YUM源
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# yum clean all
# yum makecache
# yum -y install net-tools #安装ifconfig命令
#ifconfig ens33 192.168.1.12
1、安装dhcp服务器的包
# yum -y install dhcp
#查看
[root@hd2 ~]# rpm -qa |grep dhcp
dhcp-common-4.2.5-83.el7.centos.1.x86_64
dhcp-libs-4.2.5-83.el7.centos.1.x86_64
dhcp-4.2.5-83.el7.centos.1.x86_64
[root@hd2 ~]# rpm -ql dhcp
/etc/dhcp/dhcpd.conf #主配置文件
#样例文件
/usr/share/doc/dhcp*/dhcpd.conf.example
# cd /etc/dhcp/
# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example dhcpd.conf
cp:是否覆盖"dhcpd.conf"? y
#修改主配置文件,提供至少一个dhcp地址池
# vi dhcpd.conf #修改47行到54行内容如下:
47 subnet 192.168.8.0 netmask 255.255.255.0 {
48 range 192.168.8.150 192.168.8.160;
49 option domain-name-servers 114.114.114.114;
50 option routers 192.168.8.2;
51 option broadcast-address 192.168.8.255;
52 default-lease-time 600;
53 max-lease-time 7200;
54 }
#启动dhcpd服务
[root@hd2 dhcp]# systemctl start dhcpd
#查看服务监听的端口号
[root@hd2 dhcp]# netstat -nplu|grep 67
udp 0 0 0.0.0.0:67 0.0.0.0:* 19258/dhcpd
#关闭vmware vnet8 的 dhcp服务,使用本地DHCP服务
#配置本地宿主机的vmnet8网卡,自动获取ip地址
#确定之后,打开命令提示符,ipconfig/all查看是否获取了ip地址和网关
配置客户端192.168.8.138
1、修改自动获取ip
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=dhcp
2、重启网卡
# systemctl restart network
3、查看ip
# ifconfig
4、查看路由
# route -u
5、查看DNS配置
# cat /etc/resolv.conf