多台服务器做集群时,由于上传时只在某一个服务器上传文件附件,会出现其他服务器无法找到上传的附件。这时需要共享附件上传的文件夹,以便所有集群的服务器都可以访问到上传的附件。
参考资料:http://linux.vbird.org/linux_server/0330nfs.php
要把防火墙关闭,因为NFS端口规则很复杂,不好设置。
安装nfs
yum install nfs-utils rpcbind
配置nfs: vim /etc/exports
/data/share 192.168.0.10(rw,sync,all_squash)
其中ip地址是指可以访问这个共享的IP,如果允许多个IP访问,可以使用192.168.0.*
。
共享多个文件夹可以设置多行。
关于权限
共享目录的用户为nfsnobody,可以设置(rw,sync,all_squash,anonuid=xxx,anongid=xxx)
或者设定共享目录权限为777: chmod 777 /data/share
# 修改exports后让配置生效
exportfs -arv
# 启动rpcbind服务
systemctl start rpcbind
systemctl enable rpcbind
# 启动nfs服务
systemctl start nfs
systemctl enable nfs
# 检查是否配置好
showmount -e
# 启动rpcbind服务
systemctl start rpcbind
systemctl enable rpcbind
showmount -e 192.168.0.20
# 挂载
mount -t nfs 192.168.0.20:/data/share /mnt/nfs
# 卸载
umount /mnt/share
修改文件vim /etc/rc.d/rc.local
,加入以下代码:
mount -t nfs -o nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 192.168.0.20:/data/share /mnt/nfs
如果该文件没有执行权限,则需增加执行权限:
chmod +x /etc/rc.d/rc.local
自动挂载在没有使用的时候看不见文件夹,只有在使用或者用命令进入这个文件夹时,才会自动挂载并显示。因此用来做部署不是很方便。
开机挂载和自动挂载二选一,不能同时使用。用来做部署一般使用开机挂载,如果只是简单的文件共享,可以用autofs。
# 安装
yum install autofs
配置文件vim /etc/auto.master
,加入代码:
/mnt/nfs /etc/auto.nfs
创建文件vim /etc/auto.nfs
,内容如下:
public -rw,bg,soft,rsize=32768,wsize=32768 192.168.0.20:/data/share
对应的挂载目录是/mnt/nfs/public
,不要手动创建这些文件夹,autofs会自动处理。
# 启动
systemctl start autofs
# 开启自启动
systemctl enable autofs
# 停止
systemctl stop autofs
# 关闭自启动
systemctl disable autofs