我正在使用 Ubuntu 12.04LTS,并在本地文件系统中为正在开发的网站创建了一个 apache 虚拟主机。但是,当 apache 尝试访问该网站时,却无法访问,因为所有权都在我自己的用户名中,而不是 www-data 中。因此,我更改了所有所有权:
$ chown -R www-data:www-data domain-root-name
Apache 现在很高兴,但我却不高兴,因为我无法再对这些文件进行任何操作——而为了开发目的我需要对这些文件进行操作。
我尝试做相反的事情(将 www-data 添加到我自己的组),但这只意味着 apache 无法再访问该网站。
关于这方面的内容到处都是,但对我来说都不起作用。主要的建议是将自己添加到 www-data 组。但这还不够,因为我仍然无法编辑网站的文件。
另一个建议是将所有权限设置为 777,尽管它(显然)有效,但这却让很多受访者惊恐地举手投降。
有没有人解决了这个问题,以便开发人员可以在本地 Apache 安装上安全地进行开发?
答案1
就我个人而言,我将自己设置为所有者,并将 www-data 设置为组:
sudo chown -R konapun:www-data domain-root-name
然后将权限设置为 754 (konapun:rwx,www-data:rx,其他:r):
sudo chmod -R 754 domain-root-name
如果 Apache 必须创建任何文件(临时文件,或者可能是编译模板的模板引擎),我会将这些单独的目录设置为 774。
答案2
我想我可能已经找到了答案:
Vagrant 是在非常宽松的许可证(MIT)下开源的。
我还没有尝试过所有可能的情况(例如,自动更新或向开发 WordPress 网站添加插件),但我进行的少量测试似乎表明,我可以将 apache 权限保留为 vagrant VM 中的默认值,并在主机(我的开发箱)上的 Vagrant 文件夹中工作,而不会出现任何访问问题。主机上任何 apache 安装的权限与此无关,并且不受您执行的任何操作的影响。
您必须为正在开发的网站使用非标准端口,例如 8080。如果您使用端口映射(只需在 vagrant VM 的配置文件中多加一行),这会将此端口上的请求发送到 VM 的端口 80(假设这是您在配置文件中指定的端口)。而且您需要为每个项目创建一个新的 VM,但这并不是世界末日。
从我使用 vagrant 的一点时间(仅一天左右)来看,它似乎是一种非常优雅且易于使用的解决方案,可以解决此问题和其他问题。
如果有人有其他的优点和缺点,我很想听听。