在 Vagrant 下启用 SMB 文件共享
在使用 vagrant 搭建 php 开发环境的时候,需要用到文件同步同步功能。在比对了众多网络文件系统之后,发现对 Windows 下文件同步系统最友好的是 smb, 那么怎么在 vagrant 启用 smb 文件共享呢?
不管你是用什么方式拿到了 vagrant box,在启动 vagrant box 的时候,请修改 Vagrantfile:
Vagrant.configure("2") do |config| config.vm.synced_folder "C:/Work", "/home/Code", type: "smb", smb_host: "192.168.33.1", smb_username: "ranwuer", smb_password: "yourpassword", mount_options: ["username=ranwuer","password=yourpassowrd"] end
参数解释:
1. smb_host
表示需要与哪台主机共享文件,这里填的是 host 端的 IP 地址,需要以下配置启动后,才可以使用这个 IP。
config.vm.network "private_network", ip: "192.168.33.11"
这个配置的意思是,guest 主机与 host 主机通信的私有网络。host 端的 IP 为 192.168.33.1,可以在 cmd 中输入 ipconfig 查看:
这样以来,就可以使用 smb 实现 guest 的文件夹和 host 端的文件夹之间的数据同步了。
2.smb_username,smb_password
如果不输入这个参数的话,在你运行 vagrant up 的时候,vagrant 会提示你输入 windows 的用户名和密码,来实现对 windows 中某文件夹的连接。目前我是在 windows 10 系统上实现的,还请根据实际情况填写这两个参数。总之配置了这两个参数不用每次启动的时候都输入 windows 的用户名和密码。
3.mount_options
填写这个参数是为了解决 “wrong fs type” 错误,见:https://www.vagrantup.com/docs/synced-folders/smb.html 的 COMMON ISSUES 章节。这是官方提出的错误解决方案,反正我这样子用了,就没有出现问题了。
错误提示:
一些常用技巧:
1.为了防止smb共享剔除不活动的连接需要执行以下命令让系统不要自动踢掉不活动的连接
net config server /autodisconnect:-1
2.vagrant不会自动删除共享,要删除共享使用命令
net share c30268623ba3dedeaa9f098b570dca21 /delete
3. 用 net share 查看文件共享状态
总之,我根据这个配置, 解决了在 windows 下虚拟机与 hos t主机的通过 smb 共享的问题,还请各位看官轻拍。