Бродяга 403 Запрещено
Я успешно запускаю Vagrant около недели. Прошлой ночью я запустил бродячую перезагрузку и теперь не могу получить доступ к своим сайтам.
- VirtualBox версия 4.2.16
- Бродячая версия 1.2.7
- Мой Vagrantfile и bootstrap.sh: https://github.com/kriskd/vagrant-settings
- Работает на Mac
Мои файлы живут в /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;
потому что раньше это работало, я бы не стал тратить время на исправление файла за файлом