此問題是在擁有相同配置的環境中,項目在win10跑的慢而在win7就正常的情況下發現的,一步步調試之后發現是文件操作的相關行為變的很慢,於是考慮到可能是系統問題,后來在如下鏈接找到了解決辦法:http://www.iamle.com/archives/2011.html
1。nfs方式
安裝vagrant 插件 vagrant-winnfsd
$ vagrant plugin install vagrant-winnfsd
但是這樣安裝會出現以下錯誤
Installing the 'vagrant-winnfsd' plugin. This can take a few minutes... Bundler, the underlying system Vagrant uses to install plugins, reported an error. The error is shown below. These errors are usually caused by misconfigured plugin installations or transient network issues. The error from Bundler is: An error occurred while installing childprocess (0.5.8), and Bundler cannot continue. Make sure that `gem install childprocess -v '0.5.8'` succeeds before bundling. Warning: this Gemfile contains multiple primary sources. Using `source` more than once without a block is a security risk, and may result in installing unexpected gems. To resolve this warning, use a block to indicate which gems should come from the secondary source. To upgrade this warning to an error, run `bundle config disable_multisource true`.Gem::RemoteFetcher::FetchError: Errno::ECONNABORTED: An established connection was aborted by the software in your host machine. - SSL_connect (https://rubygems.org/gems/childprocess-0.5.8.gem)
看來是缺少childprocess-0.5.8.gem這個東西
索性把需要的包都下載到本地,然后本地安裝
https://rubygems.org/gems/childprocess-0.5.8.gem
https://rubygems.org/gems/vagrant-winnfsd-1.1.0.gem
然后
vagrant plugin install childprocess-0.5.8.gem vagrant plugin install vagrant-winnfsd-1.1.0.gem
看一看安裝好的插件
$ vagrant plugin list childprocess (0.5.8) - Version Constraint: 0.5.8 vagrant-share (1.1.4, system) vagrant-winnfsd (1.1.0) - Version Constraint: 1.1.0
編輯項目下的Vagrantfile文件
Vagrant.configure('2') do |config| # other config here config.vm.network "private_network", ip: "192.168.33.10" #winfsd config.winnfsd.logging = "on" config.winnfsd.uid = 1 config.winnfsd.gid = 1 config.vm.synced_folder "./", "/vagrant", type: "nfs" end
2.SMB方式
Vagrant.configure('2') do |config| # other config here config.vm.network "private_network", ip: "192.168.33.10" #SMB config.vm.synced_folder "./", "/vagrant", type: "smb", smb_username: "母雞Windows帳號", smb_password: "母雞Windows密碼", owner: "www", group: "www" #mount_options: ["dmode=775,fmode=664"] end
啟動vagrant虛擬機, 注意啟動過程當中需要輸入windwos系統的帳號和密碼
d:\projects>vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Fixed port collision for 22 => 2222. Now on port 2200. ==> default: Preparing SMB shared folders... default: You will be asked for the username and password to use for the SMB default: folders shortly. Please use the proper username/password of your default: Windows account. default: default: Username: administrator default: Password (will be hidden): ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: hostonly ==> default: Forwarding ports... default: 22 => 2200 (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2200 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Connection timeout. Retrying... default: Warning: Connection timeout. Retrying... default: Warning: Remote connection disconnect. Retrying... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... default: The guest additions on this VM do not match the installed version of default: VirtualBox! In most cases this is fine, but in rare cases it can default: prevent things such as shared folders from working properly. If you see default: shared folder errors, please make sure the guest additions within the default: virtual machine match the version of VirtualBox you have installed on default: your host and reload your VM. default: default: Guest Additions Version: 4.3.26 default: VirtualBox Version: 5.0 ==> default: Configuring and enabling network interfaces... ==> default: Mounting SMB shared folders... default: D:/projects => /vagrant ==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> default: flag to force provisioning. Provisioners marked to run always will still run. d:\projects>
發現vagrant開啟了一個名稱為c30268623ba3dedeaa9f098b570dca21的共享
這個地方有個安全大坑,共享權限居然是Everyone!所以注意母雞Windows上是否有其他帳號能訪問!
我把c30268623ba3dedeaa9f098b570dca21本共享的權限改了,發現vagrant還是會把權限設置為Everyone
如果有開啟其他普通帳號,guest什么的這里有安全隱患
C:\Users\Administrator>net share 共享名 資源 注解 ------------------------------------------------------------------------------- IPC$ 遠程 IPC c30268623ba3dedeaa9f098b570dca21 D:\projects 命令成功完成。
為了防止smb共享剔除不活動的連接需要執行以下命令讓系統不要自動踢掉不活動的連接
net config server /autodisconnect:-1
vagrant不會自動刪除共享,要刪除共享使用命令
net share c30268623ba3dedeaa9f098b570dca21 /delete