Windows用戶: NFS文件夾在Windows主機上不起作用
1、先決條件:
* 宿主機上安裝nfs,但是Mac OS X 默認是集成了的,可以省略
我這邊是centos7.3
[root@vagrant ubuntu]# yum -y install nfs-utils rpcbind
[root@vagrant ubuntu]# systemctl start nfs
* 虛擬機上安裝nfs
首先要把虛擬機的網絡設置成 :private_network 模式,不能用public——network模式
vagrant@ubuntu-xenial:~$ sudo apt-get install nfs-common
* 暫停虛擬機
2、配置Vagrantfile文件,添加如下
config.vm.synced_folder "website/" "/opt/website", type: "nfs"
3、宿主機上創建目錄
[root@vagrant ubuntu]# mkdir website
4、當我啟動虛擬機(或者重啟載入虛擬機的時候)
使用命令 vagrant reload 重啟虛擬機后才會生效,期間會修改宿主計算機的 /etc/exports 文件
然后查看exports發現多了如下(默認是anonuid為root)
[root@vagrant website]# vim /etc/exports
# VAGRANT-BEGIN: 0 c7e6bcff-6e7d-4551-8fcb-e5cabda96273
"/vagrant/ubuntu/website" 192.168.30.100(rw,no_subtree_check,all_squash,anonuid=0,anongid=0,fsid=1307718439)
# VAGRANT-END: 0 c7e6bcff-6e7d-4551-8fcb-e5cabda96273
選項:
1、map_uid和map_gid(int) - 分別映射所有讀/寫請求的UID / GID
config.vm.synced_folder "website/","/opt/website", type: "nfs",map_uid: "1002",map_gid: "1002"
注意:
* 主機上的用戶和虛擬機上的用戶,必須使用同一個uid和gid
* 宿主機和虛擬機上都要有該用戶
宿主機上創建如下:
[root@vagrant website]# useradd -u 1002 www
重新載入虛擬機
[root@vagrant ubuntu]# vagrant reload
登錄虛擬機上查看
[root@vagrant ubuntu]# vagrant ssh
vagrant@ubuntu-xenial:/opt/website$ ll
total 4
drwxr-xr-x 2 www www 33 Jan 31 10:25 ./
drwxr-xr-x 3 root root 4096 Jan 31 10:05 ../
-rw-r--r-- 1 www www 0 Jan 31 10:06 a
-rw-r--r-- 1 www www 0 Jan 31 10:25 b
-rw-r--r-- 1 www www 0 Jan 31 10:25 c
注意: 如果vagrant宿主機是普通用戶運行,那么就需要根據系統類型,配置visudoer,摘入官網如下:
對于OS X,sudoers應該有這個條目:
Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE
對于Ubuntu Linux,sudoers應該是這樣的:
Cmnd_Alias VAGRANT_EXPORTS_CHOWN = /bin/chown 0\:0 /tmp/*
Cmnd_Alias VAGRANT_EXPORTS_MV = /bin/mv -f /tmp/* /etc/exports
Cmnd_Alias VAGRANT_NFSD_CHECK = /etc/init.d/nfs-kernel-server status
Cmnd_Alias VAGRANT_NFSD_START = /etc/init.d/nfs-kernel-server start
Cmnd_Alias VAGRANT_NFSD_APPLY = /usr/sbin/exportfs -ar
%sudo ALL=(root) NOPASSWD: VAGRANT_EXPORTS_CHOWN, VAGRANT_EXPORTS_MV, VAGRANT_NFSD_CHECK, VAGRANT_NFSD_START, VAGRANT_NFSD_APPLY
對于Fedora Linux,sudoers可能看起來像這樣(因為你的用戶屬于流浪者組):
Cmnd_Alias VAGRANT_EXPORTS_CHOWN = /bin/chown 0\:0 /tmp/*
Cmnd_Alias VAGRANT_EXPORTS_MV = /bin/mv -f /tmp/* /etc/exports
Cmnd_Alias VAGRANT_NFSD_CHECK = /usr/bin/systemctl status --no-pager nfs-server.service
Cmnd_Alias VAGRANT_NFSD_START = /usr/bin/systemctl start nfs-server.service
Cmnd_Alias VAGRANT_NFSD_APPLY = /usr/sbin/exportfs -ar
%vagrant ALL=(root) NOPASSWD: VAGRANT_EXPORTS_CHOWN, VAGRANT_EXPORTS_MV, VAGRANT_NFSD_CHECK, VAGRANT_NFSD_START
- 第一章:Vagrant基礎介紹
- 第二章:Vagrant的安裝部署
- 第一節:在centos7.3的系統上安裝部署vagrant
- 第二節:在windows server 2008 R2的系統上安裝部署vagrant
- 第三章:vagrant常見命令
- 第一節:box
- 第二節:虛擬機相關的命令
- 第四章:vagrant管理虛擬機
- 第一節:初始化centos6的系統
- 第二節:初始化ubuntu16.04的系統
- 第三節:打包自己的box
- 第五章:Vagrant之網絡配置
- 第一節:通過Forwarded Ports(轉發端口)
- 第二節:Private Networks(私有網絡)
- 第三節:Public Networks(公有網絡)
- 第六章:常見錯誤
- 第七章:Vagrant之文件同步方式
- 第一節:synced_folder(把物理機的目錄同步到虛擬機里某個目錄)
- 第二節:通過NFS共享
- 第三節:通過rsync共享
- 第八章:Vagrantfile配置文件