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

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

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

  • /home/dan/Projects/phpinfo/www :775,由dan拥有:www-data
  • /home/dan/Projects/phpinfo/www/index.php ,由丹拥有:www-data

尽pipe站点的web根目录下面的所有内容都可以被任何人阅读,但是我不能像www数据用户那样使用它(使用sudo -s www-data )。

这就是我现在的configuration。 当我curlhttp://phpinfo.local时,我得到了一个403 Forbidden

 <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和我自己创build和修改虚拟主机web根目录下的文件和目录? 过去经历了很多反复试验之后,我设法在另外一台机器上closures了这个function,但这次我不能重复。

更新

除了Shane的解决scheme之外,确保在将自己添加到组之后重新启动。 在这一点上,这个设置按预期工作。 我和Apache都拥有权限为775子目录中的写入权限,并由www-data:www-data (不是dan:www-data )拥有

www-data用户还需要能够遍历父目录( +x位) – 我打赌/home/dan/没有世界允许遍历它?