为什么我不能让Apache2从/ var / www以外的目录中提供站点服务?

时间:2014-05-09 16:09:48

标签: php linux apache ubuntu

我有一个在VirtualBox环境中运行的Ubuntu 12.04服务器。我在我的Windows系统中设置了一个共享文件夹,这很好,直到我从5.3.x将PHP更新到5.5.12。我使用了一个新的PHP源代码,因为它似乎并没有让apt-get让我升级到5.3.x.在这个过程中它也升级了apache2。我最初忽略的一个区别是vhost配置文件不再是默认或mysite。默认值现在为000-default.conf。并且apache2.conf仅设置为加载具有以.conf结尾的配置文件的站点。

问题不在于我得到任何禁止的错误,而是apache忽略任何指令,告诉它使用除/ var / www位置以外的文档根。我与VirtualBox的共享目录是/ media / sf_sandbox / - 这是Ubuntu目录。我禁用了默认站点000-default.conf并启用了其他两个站点。现在,sandbox.dev使用var / www目录中的文件而不是共享目录。它忽略了sandbox.conf文件中的指令。

我在某处读到,默认情况下,apache只提供来自/ var / www目录的文件,而且我可能需要列出其他目录的白名单。它没有说明如何做到这一点。 apache2.conf文件具有从sites-available目录加载* .conf文件的指令。不幸的是,它只是忽略指令告诉它文档根目录在我的网站上。这是在将PHP从5.3.x升级到5.5.12之后发生的,这也升级了apache2。

如何将其他目录列入白名单并告诉apache从指定位置提供文件?

1 个答案:

答案 0 :(得分:5)

首先,这真的属于Server Fault。那就是说,你问这个:

  

如何将其他目录列入白名单并告诉apache提供文件   从指定的位置?

Apache没有“白名单”这样的东西。它可以从您系统的任何位置提供内容。即使您有一组DocumentRoot,也可以使用Alias。 Apache很灵活。

所以你似乎面临的是配置问题。而已。没什么。只需找到配置文件&根据需要调整&一切都应该好。

意思是,当您运行此命令列出sites-available时,您会看到什么:

ls -la /etc/apache2/sites-available

使用sites-enabled的此命令:

ls -la /etc/apache2/sites-enabled

sites-available的内容是真实的配置文件。 sites-enabled中的项目只是sites-available中文件的符号链接。所以当你这样说时:

  

默认为000-default.conf。

你可能会混淆。由于000-default.conf中的sites-enabled只是defaultsites-available的符号链接,因此Apache实际上从中读取配置。例如,我所在的Ubuntu 12.04服务器上sites-available的内容是:

ls -la /etc/apache2/sites-available

-rw-r--r-- 1 root root  913 Apr 15 16:15 default
-rw-r--r-- 1 root root 7469 Feb 14  2012 default-ssl

然后在sites-enabled中:

ls -la /etc/apache2/sites-enabled

lrwxrwxrwx 1 root root   26 Jan 11  2013 000-default -> ../sites-available/default

请注意000-default仅是../sites-available/default的符号链接,基本上是/etc/apache2/sites-available/default

过去您需要提供更多详细信息或查看配置的位置。您甚至可以尝试运行此命令来查看您的活动Apache服务器当前正在管理的虚拟主机:

  

sudo apachectl -S

编辑:好像原始海报在000-default中没有sites-enabled。所以可以使用这样的新符号链接修复:

sudo ln -s /etc/apache2/sites-available/default /etc/apache2/sites-enabled/000-default

然后使用sudo service apache2 restart重新启动Apache,然后重试。希望这是问题所在。请注意default作为符号链接在000-default中重命名sites-enabled的原因是为了确保这是第一个加载的配置。