web-dev-qa-db-ja.com

Vagrant403禁止

私はVagrantを約1週間正常に実行しています。昨夜、vagrant reloadを実行しましたが、サイトにアクセスできなくなりました。

私のファイルは/ vagrant/Sitesにあります。最初は/ vagrant /にある私の「ウェルカムページ」でレンダリングされたサイト

http://localhost:4567/ 

私のプロジェクトはすべてサイトの下のフォルダです。たとえば、/ vagrant/Sites/testはindex.htmlをレンダリングしません。私は次のようになります

禁止

このサーバーにアクセスする/アクセスする権限がありません。ローカルホストポート4567のApache/2.4.6(Ubuntu)サーバー

仮想ホストは次のようになります。

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

Vhostはrootが所有します。私のプロジェクトファイルはvagrantが所有し、0777でchmodされています。

成功しなかった後、私は完全なvagrant destroyを実行し、続いてvagrant upを実行しました。その後、ローカルホストホストのウェルカムページもレンダリングを停止し、禁止されたエラーが発生しました。

11
Kris

私の勘では、これは浮浪者の問題ではなく、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にあります。)

7
beporter

これは解決され、最終的にはいくつかの非常に単純なことになりました。

  • 「すべてから許可」の代わりに「すべて許可」を使用する
  • 各Webサイトのコンテンツを同じレベル、つまり/vagrant/Sites/default/vagrant/Sites/test/vagrant/Sites/real-siteに配置します
  • Test.confやreal-site.confなどの仮想ホスト名に.conf拡張子を追加します
  • サイトの.htaccessファイルを尊重するためにvhostsにAllowOverrideAllを追加します(これは元の投稿にあったので、これを解決しようとすると失われました)

一週間の大部分の間私を逃したすべての非常に基本的なこと。これが他の誰かに役立つことを願っています。

3
Kris

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>

そして、私の推測では、すべてがうまくいくでしょう!

2
Gilberto Albino
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;

以前は機能していたので、ファイルごとに修正するのに時間を無駄にしませんでした

0