因为同一台机器,运行了两个Tomcat,分别有不同版本的一个应用在里面,上传的文件都放在了Tomcat的主目录下的某个文件夹。故需要将两个Tomcat中的上传的目录,映射到一个共享目录中,这样就可以上传在TomcatA中的文件,访问TomcatB的应用是仍然访问到,否则会出现文件找不到的问题。NFS就是这样的一个工具,下面是使用NFS的一些配置的心得。
NFS服务端配置
安装NFS服务nfs-untils和rpcbind
#安装之前可以先通过rpm -qa | grep -E 'rpcbind|nfs'检查是否有安装
yum install nfs-utils rpcbind -y
启动rpcbind服务(一定要先启动rpcbind服务再启动nfs服务
)
#启动rpcbind服务
systemctl start rpcbind
#查看rpcbind状态
systemctl status rpcbind
启动NFS服务
#启动NFS服务
systemctl start nfs
#查看NFS状态
systemctl status nfs
NFS服务加入开机自启动并查看其状态
#将NFS服务加入开机自启动
systemctl enable nfs.service
#查看自启动的状态
systemctl list-unit-files|grep nfs
可见,nfs.service
为enable,如下图所示:
创建用于共享的目录
#服务端用于共享的目录
mkdir -p /usr/local/filedir
**授权nfsnobody于/usr/local/filedir
**让客户端挂载后可写可读:
#将目录授权给nfnobody用户和组
chown nfsnobody:nfsnobody /usr/local/filedir
编辑/etc/exports文件
#配置共享的策略,下面的配置意思:允许192.168开头的IP的机器,访问`/usr/local/filedir`,rw:有读写权限,no_root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置)
/usr/local/filedir 192.168.*.*(rw,no_root_squash,async)
重新加载nfs配置文件
#重新加载配置,不用重启服务!!!
exportfs -rv
exportfs:NFS服务端发布共享控制命令。
-r:表示重新刷新共享。
-a:表示将配置文件/etc/exports中的所有定义共享发布出去。
-v:显示确认共享设置。
-u:表示不发布共享。
NFS客户端配置
因为现在是想要的是同一台机器的不同目录希望能共享文件,所以客户端也是在这个机器上,那么就没必要再次装nfs-utils和rpcbind
了,如果客户端和服务端不是同一台机器,那么需要在客户端安装nfs-utils和rpcbind
,跟服务端是一样的,这个要特别注意。
作为客户端,分别创建需要用作服务端共享的目录的挂载点的目录,hereA和hereB
目录是用于挂载的挂载点,相当于TomcatA和TomcatB的上传文件的路径,下面创建这两个目录,
#创建目录hereA,相当于TomcatA的文件上传目录
mkdir -p /usr/local/hereA
#创建目录hereB,相当于TomcatB的文件上传目录
mkdir -p /usr/local/hereB
挂载共享目录到挂载点
使用机器的IP是192.168.122.1
,因为实在同一台机器模拟的,所以客户端和服务的机器IP都为:192.168.122.1
,执行下面挂载命令:
#将192.168.122.1:/usr/local/filedir挂载到/usr/local/hereA目录
mount -t nfs 192.168.122.1:/usr/local/filedir /usr/local/hereA
#将192.168.122.1:/usr/local/filedir挂载到/usr/local/hereB目录
mount -t nfs 192.168.122.1:/usr/local/filedir /usr/local/hereB
挂载完毕后,此时已经完成了客户端的配置,如果在/usr/local/hereA
和/usr/local/hereB
分别写入文件,在/usr/local/hereA,/usr/local/hereB,/usr/local/filedir
目录中都可以读取到。这样就实现了文件的共享,实际上写入到/usr/local/hereA
和/usr/local/hereB
文件都放到了/usr/local/filedir
下,它们只是个挂载点。模拟的过程如下图所示:
停掉NFS服务后,就可以明显发现文件都在/usr/local/filedir
中:
配置NFS开机自启动
rpcbind默认是会开启了开机自启动的
,所以需要配置自启动的只有NFS,所以需要将nfs服务自动启动。
#将NFS服务加入开机自启动
systemctl enable nfs.service
#查看自启动的状态
systemctl list-unit-files|grep nfs
非同一台机器NFS配置
这里只讲相应的过程说明以及命令描述下来,方便直接以后直接参考着配置:
#例如两台机器:192.168.122.1和 192.168.122.2 ;192.168.122.1为服务端,192.168.122.2为客户端
#nfs服务端和客户端都需要安装并启动nfs服务
yum install nfs-utils rpcbind y
#安装后启动nfs服务
systemctl start rpcbind
systemctl start nfs
#将nfs加入自启动
systemctl enable nfs.service
#2.服务端修改/etc/exports文件
#加入下列配置,/usr/local/filedir目录必须存在
/usr/local/filedir 192.168.122.1(rw,no_root_squash,async)
#重新加载配置,可以不用重启服务
exportfs -rv
#3、客户端将服务端的共享目录进行挂载
#相当于将服务端的/usrl/local/filedir挂载到了客户端的/usr/local/filedir
mount -t nfs 192.168.122.1:/usr/local/filedir /usr/local/filedir