如何在 Ubuntu 开发机器上的任意目录中设置虚拟主机,并为 Apache 和我提供写权限?

如何在 Ubuntu 开发机器上的任意目录中设置虚拟主机,并为 Apache 和我提供写权限?

我在 XUbuntu 12.04 开发机器上,并且使用 安装了 LAMP 堆栈tasksel install lamp-server。我一直试图在我的个人项目目录中设置虚拟主机,但没有成功。我查看了 apache 文档中的示例 vhost 配置 (在单个 IP 地址上运行多个基于名称的网站)。我尝试了各种教程和博客文章中的建议,但遇到了各种问题(超时、“它有效”页面而不是 index.php、403 禁止访问)。

我启用了 userdir 模块,并将自己添加到了 www-data 组。相关文件的权限和所有者:

  • /home/dan/Projects/phpinfo/www: 775,归 dan:www-data 所有
  • /home/dan/Projects/phpinfo/www/index.php: 664,归 dan:www-data 所有

尽管任何人都可以读取该网站的网络根目录及其下的所有内容,但我无法以 www-data 用户身份(使用sudo -s www-data)进入该网站。

这是我现在的配置。当我使用 curl 时,我得到了 403 Forbiddenhttp://phpinfo.local

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName phpinfo.local

    DocumentRoot /home/dan/Projects/phpinfo/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/dan/Projects/phpinfo/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride All
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
        Require all granted /home/dan/Projects/phpinfo/www
    </Directory>

    ErrorLog /home/dan/Projects/phpinfo/logs/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /home/dan/Projects/phpinfo/logs/access.log combined

</VirtualHost>

相关行/etc/hosts

127.0.0.1 phpinfo.local

如何在任意目录中设置虚拟主机,并允许 Apache 和我自己在 vhost web 根目录下创建和修改文件和目录?经过多次尝试和错误,我曾经在另一台机器上成功完成过一次,但这次我无法重复。

更新

除了 Shane 的解决方案之外,请确保在将自己添加到组后重新启动。此时,此设置按预期工作。我和 Apache 都对具有775权限且由以下人员拥有的子目录具有写访问权限www-data:www-data (不是dan:www-data

答案1

用户www-data还需要具有遍历父目录(位)的能力+x- 我敢打赌,/home/dan/世界不允许遍历它?

相关内容