如何将 Apache2 DocumentRoot 设置为“vboxsf”VirtualBox 共享文件夹?(权限问题?)

如何将 Apache2 DocumentRoot 设置为“vboxsf”VirtualBox 共享文件夹?(权限问题?)

我在 VirtualBox VM 上安装了 Ubuntu 11.04 桌面 32 位,并与主机共享文件夹。共享文件夹是

/media/sf_Dev/

我想更改 Apache2 以指向DocumentRoot该文件夹,因此我进行了编辑/etc/apache2/sites-available/default以替换现有的该文件中的路径为 /media/sf_Dev/ 而不是 /var/www,并且它不会显示 index.html。

当我看着/varls -l看到

drwxr-xr-x  2 root root ... www

当我ls -l /media/看到

drwxrwx---  1 root vboxsf ... sf_Dev

Apache 似乎看不到我放在该目录中的 index.html(cp /var/www/index.html /media/sf_Dev/如果我没记错的话)

我也尝试编辑环境变量以使组成为 vboxsf,但我认为我做错了那部分。

export APACHE_RUN_GROUP=www-data

export APACHE_RUN_GROUP=vboxsf

我做错了什么,我需要做什么才能让 Apache2 从该目录提供文件?(从技术上讲,我想从 为 apache 提供文件,/media/sf_Dev/apache/www但我认为一步一步来,所以如果这可以帮助你简化事情,那就这样吧)

答案1

将 vboxsf 组添加为 apache 的补充组可能是最简单的。

乌本图:

sudo usermod -a -G vboxsf www-data

Fedora:

sudo usermod -a -G vboxsf apache

当我想访问自动挂载的共享文件夹时,这对我来说就完成了。您可能还想将自己的用户名添加到 vboxsf 组以访问文件。

答案2

这看起来像是权限问题。您需要/media/sf_Dev/对“其他”拥有读取和执行权限(第三组权限位,目前没有权限或---)。

因此,您需要运行此命令(因为它是 Ubuntu,请注意 sudo):

sudo chmod 775 /media/sf_Dev/

这将为“其他”添加读取和执行权限,并为所有者和组保留完全权限。

还要确保索引文件确实存在于 /media/sf_Dev/ 中。(我假设您忘记了 cp 命令中的 sudo,并且您没有以 root 身份运行。)

答案3

你没有说具体错误是什么,只是

Apache 似乎没有看到我放在该目录中的 index.html

具体的错误会有所帮助。您可以在 Apache 中归档此文件error_log,它通常位于/var/log/apache2/error.logUbunt 下,但可以通过ErrorLog指示在你的<VirtualHost>

如果没有实际错误,我认为 George Marian 是正确的,这是一个权限错误。您可以使用以下命令检查 Apache 在哪个组下运行:

ps -o pid,group -o atime,comm=CMD awx | grep apache

尝试按照他所说的链接权限/media/sf_Dev/

我认为你最好用Alias 指令因为这样可以只使 DocumentRoot 的某些部分指向外部的位置:

Alias /info /media/sf_Dev
<Directory /media/sf_Dev >
  Order allow,deny
  Allow from all
</Directory>

编辑:如果 Apache 服务器有mod_php(不是 FastCGI PHP)并且没有使用suexec,您可以使用以下 PHP 代码片段确定 Apache 是否在正确的 GID(组 ID)下运行:

<?php

var_dump(posix_getegid());

确保 返回与 相同的 GID vboxsf。(您可以在 中找到 vboxsf 的 GID /etc/groups

答案4

如果您已将共享文件夹配置为自动挂载。那么您需要先禁用该功能并手动挂载共享文件夹。如果您每次启动虚拟机时都需要自动挂载它,则需要在 /etc/fstab 中添加相应的条目。(通过 fstab 挂载 vbox 共享文件夹似乎存在一些问题。因此,在 /etc/rc.local 中添加下面提到的命令对我来说可以在启动时挂载它)。

使用正确的用户/组加载共享文件夹

据我所知,此错误是由于共享文件夹的所有者和组造成的。Apache 期望要呈现的文件属于组 www-data。但是,默认情况下,VirtualBox 中的共享文件夹属于 vboxsf 用户。我们将此用户添加到 www-data 组。为此,请在来宾上编辑组属性:

sudo usermod -a -G vboxsf www-data

我们现在将挂载共享文件夹并将其分配给 www-data 用户和组。要检查用户和组 ID,您可以查看客户机上的 /etc/passwd 文件(cat /etc/passwd | grep 'www-data')。在基于 Debian 的操作系统上,两个 ID 通常都设置为值 33。因此,只需在客户机上发出以下命令:

mount -t vboxsf -o rw,uid=33,gid=33 website /media/sf_website

请注意,website 是共享文件夹的名称(如上面的屏幕截图所示),/media/sf_website 是将安装该文件夹的位置。

更多详细信息请参阅此链接http://jimmybonney.com/articles/configure_virtualbox_shared_folder_apache_virtual_host/

相关内容