2013-08-06 8 views
10

Z powodzeniem prowadzę Vagrant przez około tydzień. Zeszłej nocy uruchomiłem przeładowanie włóczęgą, a teraz nie mam już dostępu do moich stron.Vagrant 403 Forbidden

Moje pliki Live At/wędrujących/sites . Początkowo moja "strona powitalna", która mieszka w/vagrant/Strony renderowane pod adresem:

http://localhost:4567/ 

Wszystkie moje projekty są folderami w obszarze Witryny. Na przykład/vagrant/Sites/test nie wyrenderuje index.html. Pojawia się następujący

Zakazane

Nie masz dostępu do/na tym serwerze./Server Apache 2.4.6 (Ubuntu) na localhost, port 4567

vhost wygląda następująco:

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

W vhostów są własnością root. Moje pliki projektu są własnością vagrant i chmod'ed 0777.

Po niepowodzeniu, zrobiłem pełne zniszczenie włóczęga, a następnie włóczęgę, a następnie strona powitalna hosta lokalnego przestała wyświetlać się wraz z niedozwolonym błędem.

Odpowiedz

7

Moje przypuszczenie jest takie, że nie jest to kwestia typu "włóczęga", ale wyłącznie błąd w konfiguracji Apache. Jest kilka rzeczy, które mogę sprawdzić.

Po pierwsze, należy upewnić się, że użytkownik, na którym działa apache, ma uprawnienia do odczytu i wykonywania dla folderu DocumentRoot.

Odkąd wspomniałeś o Apache 2.4, there have been changes in the configs from 2.2. Upewnij się, że twoje instrukcje Allow from all teraz czytają Require all granted. (Jeśli nadal byłeś w wersji 2.2, to chciałbyś się upewnić, że powiedzieli Allow from all zamiast Deny from all.) W obu przypadkach możesz ustawić to osobno w każdym <VirtualHost> lub ustawić domyślny w swoim bloku <Directory /> głównego pliku .

Coraz bardziej niejasny, możesz sprawdzić na selinux, chociaż jestem pewien, że to nie jest domyślnie w Ubuntu. (Na przykład w CentOS).

+0

Dzięki, "Wymagaj wszystkich przyznanych" dostałem swoją część drogi. Zawartość mojego katalogu głównego, w której renderowane są punkty localhost, jednak nie mogę dostać się do zawartości w folderze testowym w 'http: // test: 4567 /', ale mogę do niego dotrzeć w 'http: // localhost: 4567/test "co nie jest tak pożądane. – Kris

+0

Po to, aby objąć podstawy, czy sprawdziłeś, czy masz "test 127.0.0.1" w swoim pliku '/ etc/hosts'? –

+0

Dzięki za sprawdzenie, tak, mam to w moim pliku hosts Mac. Moja konfiguracja zgodnie z opisem działała bezbłędnie w poprzedniej wersji Apache, ale rozpadła się po aktualizacji. – Kris

2

To rozwiązano, a na końcu sprowadzono kilka bardzo prostych rzeczy.

  • Use „wymagają, aby wszystkie przyznane” zamiast „Pozwól ze wszystkich”
  • Put Treść Każdy stronach internetowych na tym samym poziomie, a mianowicie /vagrant/Sites/default, /vagrant/Sites/test, /vagrant/Sites/real-site
  • Dodaj .conf rozszerzenie vhosta nazwy, takie jak badania .conf i real-site.conf
  • Dodaj AllowOverride All do vhostów, aby szanować strony '.Plik htaccess (zdałem sobie sprawę, że było to w moim oryginalnym wpisie, zaginęło, gdy próbowałem to rozwiązać)

Wszystkie bardzo podstawowe rzeczy, które umykały mi przez większą część tygodnia. Mam nadzieję, że to pomoże komuś innemu.

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; 

bo pracował wcześniej, nie będę tracić czasu na pliku poprawkę pliku

2

miałem ten sam problem przy zmianie DocumentRoot.

Skoro zmieniłeś DocumentRoot do "/ any/ścieżka/foo/bar", upewnij się, że masz uprawnienia ustawione na "apache2.conf" na tej drodze.

Szukaj:

<Directory /any/path/foo/bar> 

w apache2.conf

I dodać nowy blok tak:

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

I wydaje mi się, że wszystko będzie w porządku!