背景 - 我刚购买了一台 Ubuntu 15.10 笔记本电脑 (System76),并从 Windows 7 转移过来(是的!- 真的很喜欢启动速度和应用程序速度)。在 Windows 上,我有一个 Apache、MySQL 和 PHP 堆栈以及多个 Apache 虚拟主机,其中 DocumentRoot 指向目录内的目录,我为不同的应用程序开发 php 和 Java 软件并在这些虚拟主机中对其进行了测试,例如 java_projects、php_ps_projects。
我刚刚让 LAMP 堆栈在笔记本电脑和虚拟主机上运行,它们位于/var/www
我尝试指向DocumentRoot
/home/roy/websites/php_js_projects
并修改<Directory /var/www/>
为具有<Directory /home/roy/websites//>
相同属性,但得到:
"Forbidden You don't have permission to access / on this server.
Apache/2.4.12 (Ubuntu) Server at cnrepperson_com Port 80"
我已经在谷歌上搜索过了,没有看到任何关于如何实现这一点或者是否可行的信息。
这可能吗?如果可以,需要哪些步骤?
当然希望这会起作用,因为我不想开发并复制到测试位置。
提前致谢,Roy
答案1
您需要确保运行 apache2 ( www-data
) 的虚拟用户/组至少对路径中的所有目录具有扫描访问权限 (x)。例如,以下命令(以 root 身份):
# chmod o+x /home /home/roy /home/roy/websites
# chgrp -R www-data /home/roy/websites/php_js_projects
后一个命令将使该目录树中的所有文件都属于 group www-data
,即 apache2 的组。当然,所有发布的文件也需要具有组可访问性。
另一种我认为通常更好的方法是将用户添加roy
到组中www-data
,然后将其设置为将已发布的文件保存在 下的某个位置/var/www
,并使用来自主目录的链接roy's
。这样,您就可以更清楚地区分“私有”文件和“公共”文件。