NFS的Vagrant权限问题 - 未知用户拥有的文件

时间:2014-06-02 16:12:38

标签: virtualbox vagrant nfs

我的Vagrant VM上有一个NFS共享。它可以工作,但它不能写文件(Symfony2应用程序,需要写入app / cache / prod / sessions)。

如果我使用"非NFS"分享它的作用,但是狗很慢!

在来宾虚拟机中,/var/www/fh-admin归用户501组root所有,我假设它是我的主机操作系统(OSX)上的用户?

这是我的Vagrantfile:

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = '2'

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = 'precise64'
  config.vm.box_url = 'http://files.vagrantup.com/precise64.box'

  #config.vm.network :private_network, ip: '192.168.33.12'
  config.vm.network :private_network, ip: "101.0.0.101", :netmask => "255.255.0.0"
  config.vm.boot_timeout = 60

  config.vm.network "forwarded_port", guest: 80, host: 8080

  config.vm.provision :ansible do |ansible|
    ansible.limit = 'all'
    ansible.sudo = true
    ansible.playbook = '../fh-ansible/fh.yml'
    ansible.inventory_path = 'inventory.ini'
    ansible.verbose = "v"
  end

  config.vm.synced_folder '.', '/var/www/fh-admin', :nfs => { :mount_options => ["dmode=777","fmode=666"] }
  config.vm.synced_folder '/var/www/surveyor-cordova/assets/www', '/var/www/fhapp', :nfs => { :mount_options => ["dmode=777","fmode=666"] }
  config.vm.provider :vmware do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
  end
  config.vm.provider "vmware_fusion" do |v|
    v.vmx["memsize"] = "2048"
    v.vmx["numvcpus"] = "2"
  end
end

2 个答案:

答案 0 :(得分:3)

一种选择是不在NFS共享中存储会话数据。 Benjamin Eberlei在博客文章中详细介绍了如何移动它:http://www.whitewashing.de/2013/08/19/speedup_symfony2_on_vagrant_boxes.html。我想你也可以通过配置独立指定Symfony2会话目录,如果你不想沿着那条路线走下去。

答案 1 :(得分:1)

根据您的要求进行调整:

config.vm.synced_folder "./", "/var/www/fh-admin", id: "unique-id", type: nil,
      group: 'www-data', owner: 'www-data', mount_options: ["dmode=775", "fmode=764"]

这假设您正在使用的框中存在组/用户www-data

这适用于非NFS,据我所知,NFS不接受这些额外的标志(每个mitchellh)