流浪文件结构和Web根目录

时间:2013-05-14 13:26:49

标签: vagrant

我已经阅读了文档,但有些事情仍然让我感到困惑,主要与同步文件夹和数据库数据有关。

我想在我的主机上使用以下文件夹结构

ROOT
|- workFolder
||- project1
|||- project1DatabaseAndFiles
|||- project1WebRoot
||- project2
|||- project2DatabaseAndFiles
|||- project2WebRoot
||- project3
|||- project3DatabaseAndFiles
|||- project3WebRoot

然后创建VM,其中每个VM主机webroot指向相应的projectX / projectXWebRoot文件夹。
根据我的阅读,我只能指定一个远程同步DIR。 (http://docs.vagrantup.com/v2/synced-folders/)。但是,如果我创建一个新VM,我也想指定项目名称,从而选择正确的主机文件夹。

我用Vagrant描述的是什么? 如果我希望其他开发人员使用此环境,我希望他们能够即时访问数据库结构/设置等,而无需导入任何SQL文件。这可能吗?

我希望我只是不理解Vagrants的目的,但这对我来说似乎是对共享虚拟机的好用。任何可能有帮助的指针或文章都会非常受欢迎。

1 个答案:

答案 0 :(得分:3)

  

根据我的阅读,我只能指定一个远程同步DIR。

不,这不是真的。您始终可以添加更多共享文件夹。来自 manual

  

此伪指令用于配置虚拟机上的共享文件夹,可在Vagrantfile中多次使用。

这意味着您可以使用以下方法定义其他共享文件夹:

  config.vm.share_folder "name", "/path/on/vm", "path/on/host"
  

如果我希望其他开发人员使用此环境,我希望他们能够即时访问数据库结构/设置等,而无需导入任何SQL文件。这可能吗?

是的,您可以更改MySQL的数据存储路径,以将其存储在主机上的共享中 当VM被销毁时,数据不会丢失。

然而,这并不像听起来那么简单。如果你正在使用MySQL食谱(再次,假设你正在使用MySQL),你必须修改它,以便使用mysql用户的uid和gid挂载共享文件夹,否则用户无法写入它。您可以像这样手动挂载共享:

mount -t vboxsf -o uid=`id -u mysql` -o gid=`id -g mysql` sharename /new/data/dir

另外,如果您使用的是Ubuntu或Debian Wheezy,则需要为MySQL配置不同的Apparmor, 因为它不允许写入新配置的数据目录。这可以通过编写

来完成
/new/data/dir r,
/new/data/dir/** rwk,

/etc/apparmor/apparmor.d/local/usr.sbin.mysqld。 mysql cookbook的This version已经支持这种行为,所以你可以查看它是如何做到的。