Apache2.4へのアップグレード後の403エラー


34

Ubuntu 13.04サーバーからアップグレードすると、wwwページは表示されなくなります。

エラー403禁止このサーバーにアクセスする権限がありません。

アクセス制御の保存をapache2.2からapache2.4に変更しましたが、うまくいきませんでした。他に何ができますか?

回答:


59

起こったことは、apache2.4の構成ファイルの構文が変更されたことです。

出典:13.10にアップグレードした後も同様です。

conf.dファイル

にあったすべてのファイルを/etc/apache2/conf.dに移動する必要があります/etc/apache2/conf-available

彼らは今、同じようsitesmods動作します。confファイルをconf-availableフォルダに入れて、必要なものを有効にしてくださいa2enconf <config-file-name>

例:

conf.d/httpd.confServerNameディレクティブを持つファイルがありました。
それを機能させるには、conf-availableディレクトリに移動して手動で有効にする必要がありました。

sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd

サイトファイル

以前は、ファイルに/etc/apache2/sites-availableは拡張子がありませんでした。たとえば/etc/apache2/sites-available/default。現在、.conf拡張機能が必要です。

例:

持っていた場合は/etc/apache2/sites-available/some-site、13.04でを使用して有効にすることができますsudo a2ensite some-site。今、それはあなたに言ってエラーを与えるでしょう

エラー:サイトsome-siteは存在しません!

これを修正するには、の.confすべての設定ファイルにを追加しますsites-available。で同じことを行うことも、sites-enabledすべてのファイルを削除して、それぞれを手動で再度有効にすることもできます。
おそらく各VHostを修正する必要があるため、手動で行うことをお勧めします(次のステップ)。

sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;

手動で行うことにした場合:

sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name

仮想ホストディレクティブ:

許可/拒否vs必須

次のものがある場合:

<Directory /path/to/your/site/>
    order allow,deny
    allow from all
</Directory>

次のようになります。

<Directory /path/to/your/site/>
    Require all granted
</Directory>

詳しくは、上のチェックのコメントによるDaveRandom答えスタックオーバーフロー上。

簡単に言えば、apache2.4にアップグレードし、古いapache2.2を保持したhttpd.conf場合、allowディレクティブは正常に機能し続けるはずです。アップグレードした場合httpd.conf(これをお勧めします)、Order/ Allow/ Denyディレクティブを同等のものに変更するまで403エラーが発生しますRequire

ディレクトリオプション

ディレクトリオプションがある場合は、すべてのオプションを先頭に追加する+-、まったく追加しないことに注意してください。両方を混在させることはできません。

例:

これは許可されています:

<Directory /path/to/your/site/>
    Options +Indexes +FollowSymLinks -MultiViews
</Directory>

これも同じです(これらの例は両方とも同じことをしないため、前の例ではMultiViewsオプションが無効になり、次の例ではオプションが無効になります)。

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks MultiViews
</Directory>

これはもはや許可されていません:

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks -MultiViews
</Directory>

最後の構成オプションは、次のような構文エラーをスローします。

すべてのオプションは+または-で開始する必要があります。オプションを指定しないこともできます。

Apacheを再起動します

すべてが完了したら、変更を有効にするためにApacheサーバーを再起動する必要があります。

 sudo apache2ctl restart

公式ドキュメントに2.2から2.4への詳細なアップグレードガイドがあります。


1
私のシステムには、httpd.confファイルもconf.dディレクトリもありません。しかし、apache2.confファイルがあります。conf-availableディレクトリに移動しようとしましたが、apache2を再起動したときに次のエラーが発生しました。apache2:構成ファイル/etc/apache2/apache2.confを開けませんでした
アマルムラリ

@AmalMurali httpd.confは単なる例です。conf.dディレクトリに設定ファイルがない場合があります。その場合は、その手順をスキップしてください。についてapache2.confは、conf-availableディレクトリに移動しないでください。これはapacheのメイン構成ファイルであり、そのパスは/etc/apache2/apache2.confである必要があり、変更しないでください。
ダン14

1
ワオ。これは、実際にどこでも見つかる唯一の明快な概要です。ありがとう。
ラスベートマン14

config.dまたはsites availableフォルダがありません。ここですべての設定ファイルを参照してください:imgur.com/WczXp3v
diEcho

1
:あなたはまだ、次の質問の答えに説明しないと、デフォルトの仮想ホストを使用している場合は@EdwardBlack別の理由があるかもしれませんApacheのバーチャルホストは、もはや13.10にアップデートした後、作業
ダン

0

WebサイトはUbuntuサーバーで実行されていると思います。

httpd.confをチェックして、DocumentRoot設定が正しい場所を指していることを確認してください。

DocumentRootによって参照されるフォルダーのファイル許可を確認します。これは、Webサーバーを実行するユーザーが読み取ることができます。

適切なindex.html / index.htmなどがあること、およびWebサーバーがディレクトリ一覧を作成しようとしていないことを確認してください。


0

私は同様の問題に遭遇しました。

「Allow from All」を使用しない限り、Apache 2.4を実行できませんでした。これは、バージョン<2.4からクリーンブレークを提供したいので面倒でした。多くの試行錯誤と多くの検索の後、access_compatへの参照を見つけ、これが互換性のためだけにあることに気付きました。Apacheのドキュメントには両方を使用できると書かれていますが、使用しないことをお勧めします。

このモジュールを/ etc / sysconfig / apache2ロードファイルから削除すると、問題がすぐに解決しました。

よろしくリアム


-1

非標準のディレクトリからファイルを提供しているため、アップグレード作業を行うには、/ etc / apache2 / apache2.confを編集して追加する必要がありました。オプションインデックスFollowSymLinks AllowOverrideなし

この後、上記の推奨される変更により、403エラーはなくなりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.