如何配置Apache以在主机计算机的共享文件夹中提供页面?

如何配置Apache以在主机计算机的共享文件夹中提供页面?

我正在使用VirtualBox 5.2.22在Windows 10上运行Ubuntu 18.10

让我解释一下我想要实现的目标。在 Windows 中,我有两个开发环境。我使用 WAMP 服务器进行开发。我使用 Dropbox 同步我的两个开发环境。方法如下:我有一个目录,d:\Dropbox\_www然后我的两个 Apache 都以完全相同的方式配置。在开发中,我使用 SQLite,因此数据库没有任何问题。我已经以这种方式工作了一年多,没有出现任何问题。

我唯一的问题是我使用我的家用电脑作为环境之一,并且它已经充满了游戏、其他程序等,所以我认为使用 Linux 在干净的 VM 上复制我的环境是一个好主意。

我创建了d:\dropbox\_www一个共享文件夹,并且它安装在/media/sf__www我对它有完全访问权限的位置,我可以使用 VS Code 来编辑文件等。

现在,我配置了Lamp Server,Apache 2,PHP和MySQL正常工作,我做了一个小页面/var/www/test,一切都还好

我的问题是我无法将Apache的虚拟服务器配置为我/media/sf__www所做的。

在 /etc /hosts中,我添加了:

laravel.com.devel    127.0.0.1

我创建了一个以下内容laravel.conf/etc/apache2/sites-available

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /media/sf__www/lara/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ServerName laravel.com.devel
</VirtualHost>

我有以下apache2.conf内容:

<Directory "/media/sf__www/lara/">
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

然后我激活了该网站并重新启动了 Apache:

sudo a2ensite laravel.conf
service apache2 reload

现在,当我去浏览器时,我得到的就是403:

Forbidden

You don't have permission to access / on this server.
Apache/2.4.34 (Ubuntu) Server at laravel.com.devel Port 80

认为这可能与文件系统中的权限有关(我在Ubuntu中很漂亮),我sudo chmod 777 lara -R为更改目录中的所有权限而做了A,但仍然给了我403。

因此,我必须如何配置Apache才能与外部目录一起工作/var/www/

编辑:来自IS的部分输出ll /media/sf__www/lara

drwxrwx--- 1 root vboxsf   4096 oct 23 17:51 ./
drwxrwx--- 1 root vboxsf   4096 dic  8 09:58 ../
drwxrwx--- 1 root vboxsf   4096 oct 26 21:05 app/
-rwxrwx--- 1 root vboxsf   1686 oct 22 18:44 artisan*
drwxrwx--- 1 root vboxsf      0 oct 21 12:08 bootstrap/
-rwxrwx--- 1 root vboxsf   1477 oct 22 18:44 composer.json*
-rwxrwx--- 1 root vboxsf 144373 oct 22 18:48 composer.lock*

看起来你不能 chmod/chown 此目录


编辑:小组的输出

luisferfranco@luisfer-vb:/media/sf__www/lara$ groups
luisferfranco adm cdrom sudo dip plugdev lpadmin sambashare vboxsf

编辑:setFacl在目录上的输出:

luisferfranco@luisfer-vb:/media/sf__www/lara$ sudo setfacl -d -R -m u:$USER:rwx,g:www-data:rwx,o:rx /media/sf__www/lara
[sudo] contraseña para luisferfranco: 
setfacl: /media/sf__www/lara: La operación no está soportada
setfacl: /media/sf__www/lara/app: La operación no está soportada
setfacl: /media/sf__www/lara/app/Console: La operación no está soportada
setfacl: /media/sf__www/lara/app/Exceptions: La operación no está soportada

每个文件都显示“操作不支持”。我在其他网站上看到过,这可能与分区有关


编辑: [解决了]

我要感谢 George Udosen (https://askubuntu.com/users/459561/george-udosen我有一个问题,我遇到了一个用户:user:459561,他在聊天中花了一个多小时帮我解决了这个问题。他尝试了很多不同的方法,直到成功。基本上解决问题的方法是将一个用户添加到 vboxsf 组,如下所示:

sudo adduser www-data vboxsf

非常感谢您,您在圣诞节期间花了这么多时间来帮助一个完全陌生的人,您真是个了不起的人。

答案1

尝试让 Apache 在 Ubuntu 客户机上从 Windows 主机访问共享文件夹非常棘手,因为 Virtualbox 使用用户root和组挂载共享文件夹vboxsf。为了让它正常工作,我们(OP 和我)尝试使用命令重新挂载该位置

 sudo mount -t vboxsf -o remount,uid=1000,gid=1000,rw __www /media/sf__www

这不起作用,所以我们使用了一个解决方法,使用以下命令将 apache 用户添加www-data到组中vboxsf

 sudo adduser www-data vboxsf

并且此后客户端上的 Apache 就能够访问该位置。

答案2

我自己是个新手,但我可以给你一点提示来解决这种情况,我们通常有由 root 用户拥有的目录结构(默认)。如果我们希望普通用户能够修改我们网络目录中的文件,你可以通过执行以下操作来更改所有权:

sudo chown -R $USER:$USER /media/sf__www/lara/

请确保该LARA目录由普通用户拥有,如果不是,请尝试上述命令,然后重新启动Apache,它可能对您有效,然后您可以像往常一样将目录的模式更改为755。

相关内容