403 Fehler nach dem Upgrade auf apache2.4

34

Nach dem Upgrade vom Ubuntu 13.04-Server werden die WWW-Seiten nicht angezeigt.

Fehler 403 Verboten Sie haben keine Berechtigung, auf diesen Server zuzugreifen.

Ich habe die Zugriffssteuerungsspeicher von apache2.2 auf apache2.4 geändert, aber das hat nicht funktioniert. Was könnte ich noch tun?

user205336
quelle

Antworten:

59

Es ist passiert, dass sich die Syntax der Konfigurationsdateien in apache2.4 geändert hat.

Quelle: Dies ist mir auch passiert, nachdem ich auf 13.10 aktualisiert habe

conf.d-Dateien

Alle Dateien, die sich in befanden, /etc/apache2/conf.dsollten in verschoben werden /etc/apache2/conf-available.

Sie arbeiten jetzt auf die gleiche Art sitesund Weise mods. Legen Sie einfach Ihre conf-Dateien in den conf-availableOrdner und aktivieren Sie den gewünschten Ordner a2enconf <config-file-name>.

Beispiel:

Ich hatte eine Datei, conf.d/httpd.confdie die ServerName-Direktive hatte.
Damit das funktioniert, musste ich es in das conf-availableVerzeichnis verschieben und manuell aktivieren.

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

Sites-Dateien

Zuvor hatten Dateien in /etc/apache2/sites-availablekeine Erweiterung. Zum Beispiel /etc/apache2/sites-available/default. Jetzt ist eine .confErweiterung erforderlich.

Beispiel:

Wenn ja /etc/apache2/sites-available/some-site, können Sie es in 13.04 einfach mit aktivieren sudo a2ensite some-site. Jetzt wird ein Fehler angezeigt

FEHLER: Site some-site existiert nicht!

Um dies zu beheben, hängen Sie ein .confan alle Ihre Konfigurationsdateien in an sites-available. Sie können dasselbe in sites-enabledausführen oder Sie können alle Dateien löschen und sie jeweils manuell wieder aktivieren.
Ich empfehle sie manuell zu machen, da Sie wahrscheinlich jeden VHost reparieren müssen (nächster Schritt).

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

Wenn Sie sich dazu entschieden haben, diese manuell auszuführen:

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

Anweisungen für virtuelle Hosts:

erlauben / verweigern vs erfordern

Wenn Sie folgendes hätten:

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

Es sollte werden:

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

Weitere Informationen finden Sie in den Kommentaren von DaveRandom zu einer Antwort auf Stack Overflow.

Kurz gesagt, wenn Sie ein Upgrade auf apache2.4 durchgeführt haben und das alte httpd.confvon apache2.2 beibehalten haben, sollte allow Directive weiterhin einwandfrei funktionieren. Wenn Sie Ihr Upgrade httpd.conf(was ich würde vorschlagen), erhalten Sie 403 Fehler , bis Sie die Änderung Order/ Allow/ DenyRichtlinien zu deren Äquivalent Require.

Verzeichnisoptionen

Wenn Sie Directory - Optionen haben, zur Kenntnis , dass sie alle mit einem vorangestellt werden müssen +oder -oder keiner von ihnen überhaupt. Eine Mischung aus beiden ist nicht erlaubt:

Beispiel:

Das ist erlaubt:

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

Das ist auch so (Beachten Sie, dass diese Beispiele nicht dasselbe tun, das vorherige deaktiviert die MultiViewsOption, das nächste nicht):

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

Dies ist nicht länger erlaubt:

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

Die letzte Konfigurationsoption löst einen Syntaxfehler aus, der besagt:

Entweder müssen alle Optionen mit + oder - beginnen, oder keine Option darf.

Starten Sie Apache neu

Sobald alles erledigt ist, müssen Sie Ihren Apache-Server neu starten, damit die Änderungen wirksam werden:

 sudo apache2ctl restart

Eine ausführliche Anleitung zum Upgrade von 2.2 auf 2.4 finden Sie in der offiziellen Dokumentation.

Dan
quelle
1
Auf meinem System gibt es keine httpd.confDatei oder kein conf.dVerzeichnis. Aber es gibt eine apache2.confAkte. Ich habe versucht, es in das conf-availableVerzeichnis zu verschieben, und habe beim Neustart von apache2 die folgende Fehlermeldung erhalten: apache2: Die Konfigurationsdatei /etc/apache2/apache2.conf konnte nicht geöffnet werden. Keine solche Datei oder kein solches Verzeichnis - Was könnte der Grund sein?
Amal Murali
@AmalMurali Das httpd.confwar nur ein Beispiel. Es ist möglich, dass Sie keine Konfigurationsdateien im conf.dVerzeichnis haben. In diesem Fall überspringen Sie einfach diesen Schritt. Was apache2.confsollte es nicht in die bewegt werden conf-availableVerzeichnis. Es ist die Hauptkonfigurationsdatei von Apache. Der Pfad sollte /etc/apache2/apache2.conf lauten und darf nicht geändert werden.
Dan
1
Wow. Dies ist praktisch die einzige übersichtliche Darstellung, die irgendwo zu finden ist. Vielen Dank.
Russ Bateman
Es gibt keine config.doder sites availableOrdner. Alle Konfigurationsdateien finden Sie hier: imgur.com/WczXp3v
diEcho
1
@EdwardBlack Es könnte einen weiteren Grund sein , wenn Sie immer noch den Standard virtuellen Host verwendet werden , wie in den Antworten der folgenden Frage erklären: Apache Virtual funktioniert nicht mehr nach Update auf 13.10
Dan
0

Ich gehe davon aus, dass die Websites auf Ihrem Ubuntu-Server ausgeführt werden.

Überprüfen Sie Ihre httpd.conf, um sicherzustellen, dass Ihre DocumentRoot-Einstellung auf die richtige Stelle verweist.

Überprüfen Sie, ob die Dateiberechtigungen für den Ordner, auf den DocumentRoot verweist, vom Benutzer gelesen werden können, unter dem der Webserver ausgeführt wird.

Stellen Sie sicher, dass Sie eine geeignete index.html / index.htm usw. haben und der Webserver nicht versucht, eine Verzeichnisliste zu erstellen.

Matt
quelle
0

Ich bin auf ähnliche Probleme gestoßen.

Ich konnte Apache 2.4 nur dann zum Laufen bringen, wenn ich "Allow from All" verwendet habe. Dies war ärgerlich, da ich eine saubere Unterbrechung von Versionen <2.4 bereitstellen wollte. Nach vielem Ausprobieren und Suchen habe ich einen Verweis auf access_compat gefunden und festgestellt, dass dieser nur aus Kompatibilitätsgründen vorhanden ist. Obwohl die Apache-Dokumentation besagt, dass beide verwendet werden können, wird empfohlen, dies nicht zu tun.

Ich habe dieses Modul aus der / etc / sysconfig / apache2-Ladedatei entfernt, dies hat mein Problem sofort gelöst.

Grüße Liam

Liam O Donnell
quelle
-1

Ich versorge Dateien aus einem nicht standardmäßigen Verzeichnis, damit das Upgrade funktioniert. Ich musste /etc/apache2/apache2.conf bearbeiten und Folgendes hinzufügen: Optionen Indizes FollowSymLinks AllowOverride Keine Alle erforderlich, die erteilt wurden

Danach und mit den oben empfohlenen Änderungen verschwand der Fehler 403.

kupy Welpe
quelle