Бродяга 403 Запрещено

Я успешно запускаю Vagrant около недели. Прошлой ночью я запустил бродячую перезагрузку и теперь не могу получить доступ к своим сайтам.

Мои файлы живут в /vagrant/Sites. Сначала моя "страница приветствия", которая находится на / vagrant / Сайты отображаются на

http://localhost:4567/ 

Все мои проекты - это папки под Сайтами. Например, /vagrant/Sites/test не будет отображать index.html. Я получаю следующее

запрещено

У вас нет разрешения на доступ к / на этом сервере. Сервер Apache/2.4.6 (Ubuntu) на локальном хосте, порт 4567

Вхост выглядит так:

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

Vhosts принадлежат пользователю root. Файлы моего проекта принадлежат vagrant и chmod'ed 0777.

После безуспешного выполнения я выполнил полное уничтожение бродяги с последующим бродяжничеством, после чего страница приветствия локального хоста также перестала отображаться с запрещенной ошибкой.

4 ответа

Я догадываюсь, что это вообще не бродячая проблема, а только глюк конфигурации 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, например.)

Это решено и в итоге сводится к некоторым очень простым вещам.

  • Используйте "Требуется все предоставлено" вместо "Разрешить от всех"
  • Разместите контент каждого сайта на одном уровне, а именно /vagrant/Sites/default, /vagrant/Sites/test, /vagrant/Sites/real-site
  • Добавьте расширение.conf для имен vhost, таких как test.conf и real-site.conf
  • Добавьте AllowOverride All в vhosts, чтобы уважать файл.htaccess сайтов (я понимаю, что это было в моем исходном посте, он потерялся, когда я пытался решить эту проблему)

Все очень простые вещи, которые ускользали от меня большую часть недели. Я надеюсь, что это может помочь кому-то еще.

У меня была такая же проблема при смене 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>

И я думаю, что все будет хорошо!

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;

потому что раньше это работало, я бы не стал тратить время на исправление файла за файлом

Другие вопросы по тегам