Apache 在 Vagrant 中创建/编写目录
Posted
技术标签:
【中文标题】Apache 在 Vagrant 中创建/编写目录【英文标题】:Apache creating/writing directories in Vagrant 【发布时间】:2013-07-22 17:29:15 【问题描述】:我有以下流浪共享设置:
config.vm.synced_folder "~/web", "/opt/subversion/web"
我的一个页面,打开 zip 文件并将它们解压缩到一个目录,比如说:
/opt/subversion/web/extracts/
当我们从 VM 内部查看目录时,它看起来像这样:
drwxrwxrwx 1 vagrant vagrant 136 Jul 23 13:31 extracts
当我们查看主机上的目录时,它是这样的:
drwxrwxrwx 4 garth staff 136 Jul 23 15:31 extracts
然后网页会创建一个目录来存储 'extracts' 目录中 zip 文件中的内容(VM 视图):
drwxr-xr-x 1 vagrant vagrant 68 Jul 23 13:31 ZipExtractDir
当我试图从 apache/web 页面写入该目录中的文件时,我得到了权限被拒绝。
我在安装 Vagrant V1 之前从未遇到过这个问题,但我的共享是使用 sync_folder 选项的 :nfs=>true 属性完成的。我们现在正在使用通过 puppet 管理的 vagrant 的“全局”开发安装,带有“config.vm.network :public_network”
我是否必须设置 nfs,或者这里是否有其他问题以及 apache 将目录创建为“vagrant”而不是“apache”的原因。我假设我们无法写入目录,因为它是使用所有者“vagrant”而不是“apache”创建的,然后当 apache 尝试写入目录时,它会收到权限被拒绝错误。我什至可以使用 DHCP 使用 vagrant 设置 nfs,还是必须拥有静态 IP?
作为参考,apache 设置为使用 apache 用户。我还检查了 /etc/selinux/config 并设置了 SELINUX=disabled
【问题讨论】:
【参考方案1】:我设法通过设置同步文件夹的权限找到解决此问题的方法,因此尽管 vagrant 内部的 user.group 是错误的,但它不是世界末日,只要 apache 用户可以写入目录.
config.vm.synced_folder "~/web", "/opt/subversion/web", :extra => 'dmode=777,fmode=777'
编辑:
对于 Vagrant 1.3.0+ 使用 :mount_options 而不是 :extra。
config.vm.synced_folder "~/web", "/opt/subversion/web", :mount_options => ['dmode=777,fmode=777']
【讨论】:
以上是关于Apache 在 Vagrant 中创建/编写目录的主要内容,如果未能解决你的问题,请参考以下文章