赞
踩
2021/9/20日更新
文章部分内容转载
NFS服务端为ubuntu,本文假设你已经安装好NFS服务(安装教程:https://blog.csdn.net/qq_37860012/article/details/86717891)使用Mac连接遇到了问题。
编辑服务端配置文件:
vim /etc/exports
/var/www *(rw,async,insecure,no_subtree_check,all_squash,anonuid=0,anongid=0)
参数的解释:
ro:共享目录只读; rw:共享目录可读可写; all_squash:所有访问用户都映射为匿名用户或用户组; no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组; root_squash(默认):将来访的root用户映射为匿名用户或用户组; no_root_squash:来访的root用户保持root帐号权限; anonuid=<UID>:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534); anongid=<GID>:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534); secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器; insecure:允许客户端从大于1024的tcp/ip端口连接服务器; sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性; async:将数据先保存在内存缓冲区中,必要时才写入磁盘; wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率; no_wdelay:若有写操作则立即执行,应与sync配合使用; subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限; no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
不建议通过“访达”图形化连接NFS,因为它连接时默认开启“文件锁”;这会严重导致文件传输缓慢;甚至断开连接。
遂,使用终端命令挂载NFS;也可以写成脚本一键操作
sudo mount -o nolock,hard,intr,tcp,nfsvers=3 192.168.99.1:/var/www ~/Desktop/test
参数解释:
-o 其他选项
nolock 不使用文件锁
hard 不断尝试与服务端连接,直到连接上
intr 允许通知中断一个NFS调用。当服务器没有应答需要放弃的时候有用处
tcp 使用tcp协议连接(在NFSv2时仅支持udp)
nfsvers 指定服务端版本,3
192.168.99.1:/var/www ip地址和服务端设置的NFS目录
~/Desktop/test 本地文件夹,挂载点
无法上传文件是因为权限
一般有两种办法:
1、服务端将NFS目录权限设置为777
2、在服务端创建和客户端用户uid一样的用户,并赋予NFS目录的权限
我这是第三种方法,将所有访问用户都映射为匿名用户或用户组,并指定匿名访问用户的本地用户UID和GID为0,0为服务端root用户的UID和GID。(因为我经常要在服务端使用root用户操作NFS目录的文件,第一、二种方案不方便)。(上文中服务端配置文件,已经配置该方法)
至于拓展,上文中提到NFS目录为/var/www,为了在mac中搭建PHP开发环境;但又不习惯安装MAPP软件(相比在mac中安装开发环境,我认为虚拟机中更安全,故使用虚拟机Ubuntu搭建网站环境,使用NFS解决mac下不方便图形化访问网站目录文件的问题。并且,支持使用Sublime Text或者VSCode编辑NFS里的文件)
有不懂的可以在评论区问我
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。