![如何配置Apache以在主机计算机的共享文件夹中提供页面?](https://linux22.com/image/1011339/%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AEApache%E4%BB%A5%E5%9C%A8%E4%B8%BB%E6%9C%BA%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E6%8F%90%E4%BE%9B%E9%A1%B5%E9%9D%A2%EF%BC%9F.png)
我正在使用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。