2013-08-06 292 views
10

我已經成功運行了大約一週的流浪漢。昨晚我跑了流浪重載,現在我不能再訪問我的網站。Vagrant 403 Forbidden

我的文件住在/流浪者/網站。起初,我的「歡迎頁面」生活在/ 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> 

的虛擬主機是由超級用戶擁有。我的項目文件屬於vagrant和chmod'ed 0777.

在沒有成功之後,我做了一次完全的流浪摧毀,然後是vagrant up,然後localhost主機歡迎頁面停止了渲染以及禁止的錯誤。

回答

7

我的直覺是,這不是一個流浪問題,而只是一個Apache配置故障。我可以考慮檢查一些事情。

首先,很明顯,是確認apache正在運行的用戶具有對DocumentRoot文件夾的讀取和執行權限。

既然您提到了Apache 2.4,there have been changes in the configs from 2.2。確保您的Allow from all陳述現在讀取Require all granted。 (如果你還在2.2,你應該確保他們說的是Allow from all而不是Deny from all)。無論哪種情況,你可以分別在每個<VirtualHost>中設置它,或者在主文件的<Directory />塊中設置默認值。

越來越模糊,你可以檢查selinux,儘管我很確定這在Ubuntu默認情況下不存在。 (例如,在CentOS中)。

+0

謝謝,「要求所有授予」讓我成爲那裏的一部分。我的根目錄中的本地主機點呈現的內容,但是我無法到達'http:// test:4567 /'測試文件夾中的內容,但我可以通過'http:// localhost:4567/test '這並不理想。 – Kris

+0

爲了覆蓋基地,你確認你的'/ etc/hosts'文件中有'127.0.0.1 test'嗎? –

+0

感謝您的檢查,是的,我確實在我的Mac主機文件中有。我所描述的設置完全符合Apache的先前版本,但升級後卻崩潰了。 – Kris

2

這已經解決了,最終歸結爲一些非常簡單的事情。

  • 使用「要求所有授權」,而不是
  • 將每個網站的內容在同一水平「從全部允許」,即/vagrant/Sites/default/vagrant/Sites/test/vagrant/Sites/real-site
  • 添加的.conf擴展到虛擬主機的名稱,如測試.conf和real-site.conf
  • Add AllowOverride All to vhosts to respect sites'。htaccess文件(我意識到這是在我原來的帖子,它迷路了,因爲我試圖解決這個問題)

所有非常基本的東西,讓我在一個星期的更好的一部分。我希望這可以幫助別人。

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; 

,因爲它工作之前,我不會按文件

2

時間浪費在修復文件我改變DocumentRoot的時候有同樣的問題。

既然你已經改變了你的DocumentRoot 「/任何/路/富/酒吧」,請確保您有「apache2.conf」這條路徑設置的權限。

搜索:

<Directory /any/path/foo/bar> 

在apache2.conf

,並添加一個新的塊這樣的:

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

我的猜測是,一切都會好起來的!