为什么 Dropbox 会导致 Ubuntu 上的 apache2 虚拟主机路径出现路径 + 权限问题?

为什么 Dropbox 会导致 Ubuntu 上的 apache2 虚拟主机路径出现路径 + 权限问题?

我正在尝试在 64 位 12.04 Ubuntu 机器上创建一个开发环境,但让虚拟主机工作却非常困难。我终于弄清楚了问题所在,但我真的不明白。

我将虚拟主机的文档根目录设置为我的主目录 - 即:

/主页/罗伯特/Dropbox/www/personville

当我在浏览器中访问 www.personvillepress2.com 时,我得到

禁止访问 您无权访问此服务器上的 /。Apache/2.2.22 (Ubuntu) 服务器位于 www.personvillepress2.com 端口 80

在日志中,我看到

[2012 年 6 月 16 日星期六 09:55:25] [crit] [客户端 127.0.0.1] (13)权限被拒绝:/home/robert/Dropbox/.htaccess pcfg_openfile:无法检查 htaccess 文件,请确保其可读

我将文档根目录移至 /主页/罗伯特/www/personville

相应地修改虚拟主机设置,重新加载,然后突然一切正常!这很糟糕,因为我想将所有源代码保留在我的 Dropbox 文件夹中以进行备份。

我对 Dropbox 文件夹的权限似乎很正常:

robert@kundera-linux:~/Dropbox$ ls -al
total 1036
drwx------ 29 robert robert   4096 Jun 15 09:11 .
drwxr-xr-x 60 robert robert   4096 Jun 15 21:15 ..
-rw-rw-r--  1 robert robert     29 Jun 15 09:11 .dropbox
drwxrwxr-x  2 robert robert 262144 Jun 13 05:22 .dropbox.cache
drwxrwxr-x  5 robert robert   4096 Jun  9 00:00 www

没有符号链接或异常严格的权限。此外,我没有发现任何可能导致任何问题的 .htaccess 问题(为什么 apache2 会关心文档根目录之上的 .htaccess 权限问题?)

我很感激任何关于如何解决这个问题的想法,让我能够将源文件保留在 Dropbox 中。

不起作用的虚拟主机文件如下:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
ServerName  personvillepress2.com
      ServerAlias www.personvillepress2.com
    # DocumentRoot /var/www
    DocumentRoot /home/robert/Dropbox/www/personville

    <Directory /home/robert/Dropbox/www/personville>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>


    ErrorLog ${APACHE_LOG_DIR}/personvillepress2error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

更新:我发现其他人之前也遇到过这个问题。https://stackoverflow.com/questions/9460052/how-can-i-use-a-dropbox-directory-as-a-virtual-host-document-root-in-osx

我其实并不担心这里的安全性——这是一个开发箱;我主要担心备份和从其他机器访问。我正在考虑使用 git 部署到实时站点,所以我想要的只是一种备份本地数据的方法。有人能提出解决方案吗?谢谢。

答案1

在我看来,这只是一个简单的权限问题。在 Ubuntu 上,Apache 以用户www-data组的身份运行www-data。从您的目录列表中我们可以看到,您的目录上的权限~/Dropbox(通过.)为drwx------700。因此 Apachewww-data:www-data被拒绝访问。

chmod 755 ~/Dropbox

可能会解决眼前的问题。通常,您需要提供o:rx目录权限和o:r文件权限,以允许 Apache 访问这些文件。

相关内容