11

我已经成功运行 Vagrant 大约一周了。昨晚我运行了 vagrant reload,现在我无法再访问我的网站了。

我的文件位于 /vagrant/Sites。起初我的“欢迎页面”位于 /vagrant/Sites 呈现在

http://localhost:4567/ 

我所有的项目都是站点下的文件夹。例如,/vagrant/Sites/test 不会呈现 index.html。我得到以下

禁止的

您无权访问此服务器上的 /。Apache/2.4.6 (Ubuntu) 服务器在 localhost 端口 4567

虚拟主机看起来像:

<VirtualHost *:80>
  DocumentRoot "/vagrant/Sites/test"
  ServerName test
  <Directory "/vagrant/Sites/test">
    AllowOverride All
  </Directory>
</VirtualHost>

虚拟主机由 root 拥有。我的项目文件归 vagrant 和 chmod'ed 0777 所有。

没有成功后,我做了一个完整的 vagrant destroy ,然后 vagrant up ,然后本地主机欢迎页面也停止渲染,并出现禁止错误。

4

4 回答 4

7

我的直觉是,这根本不是一个流浪问题,而只是一个 Apache 配置故障。有几件事我可以考虑检查。

首先,显然是要确认运行 apache 的用户对 DocumentRoot 文件夹具有读取和执行权限。

由于您提到了 Apache 2.4,因此 2.2 的配置发生了变化。确保您的Allow from all陈述现在已阅读Require all granted。(如果您仍在使用 2.2,则需要确保他们说Allow from all的是Deny from all.)在任何一种情况下,您都可以单独设置它,或者在主文件<VirtualHost>的块中设置默认值。<Directory />httpd.conf

变得更加晦涩,您可以检查selinux,尽管我很确定默认情况下这在 Ubuntu 中不存在。(例如,它在 CentOS 中。)

于 2013-08-06T13:43:07.467 回答
3

这解决了,最后归结为一些非常简单的事情。

  • 使用“要求全部授予”而不是“全部允许”
  • 将每个网站的内容放在同一级别/vagrant/Sites/default/vagrant/Sites/test/vagrant/Sites/real-site
  • 为 vhost 名称添加 .conf 扩展名,例如 test.conf 和 real-site.conf
  • 将 AllowOverride All 添加到虚拟主机以尊重站点的 .htaccess 文件(我意识到这是在我原来的帖子中,当我试图解决这个问题时它丢失了)

在一周的大部分时间里,所有非常基本的事情都让我无法理解。我希望这可以帮助别人。

于 2013-08-10T20:47:40.117 回答
2

更改 DocumentRoot 时遇到了同样的问题。

由于您已将DocumentRoot更改为"/any/path/foo/bar",因此请确保您已在 "apache2.conf" 上为此路径设置了权限。

搜索:

<Directory /any/path/foo/bar>

在 apache2.conf

并像这样添加一个新块:

<Directory /any/path/foo/bar>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

我的猜测是一切都会好起来的!

于 2016-01-07T14:52:57.490 回答
0
cd /etc/apache2/sites-available
for file in `ls *`; do sed 's/\(.*<\/Directory.*>\)/Require\ all\ granted\n\1/' $file > $file.new;mv $file.new $file ; done;

因为它以前有效,所以我不会浪费时间逐个修复文件

于 2013-10-03T14:44:26.457 回答