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.d
sollten in verschoben werden /etc/apache2/conf-available
.
Sie arbeiten jetzt auf die gleiche Art sites
und Weise mods
. Legen Sie einfach Ihre conf-Dateien in den conf-available
Ordner und aktivieren Sie den gewünschten Ordner a2enconf <config-file-name>
.
Beispiel:
Ich hatte eine Datei, conf.d/httpd.conf
die die ServerName-Direktive hatte.
Damit das funktioniert, musste ich es in das conf-available
Verzeichnis 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-available
keine Erweiterung. Zum Beispiel /etc/apache2/sites-available/default
. Jetzt ist eine .conf
Erweiterung 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 .conf
an alle Ihre Konfigurationsdateien in an sites-available
. Sie können dasselbe in sites-enabled
ausfü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.conf
von 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
/ Deny
Richtlinien 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 MultiViews
Option, 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.
httpd.conf
Datei oder keinconf.d
Verzeichnis. Aber es gibt eineapache2.conf
Akte. Ich habe versucht, es in dasconf-available
Verzeichnis 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?httpd.conf
war nur ein Beispiel. Es ist möglich, dass Sie keine Konfigurationsdateien imconf.d
Verzeichnis haben. In diesem Fall überspringen Sie einfach diesen Schritt. Wasapache2.conf
sollte es nicht in die bewegt werdenconf-available
Verzeichnis. Es ist die Hauptkonfigurationsdatei von Apache. Der Pfad sollte /etc/apache2/apache2.conf lauten und darf nicht geändert werden.config.d
odersites available
Ordner. Alle Konfigurationsdateien finden Sie hier: imgur.com/WczXp3vIch 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.
quelle
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
quelle
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.
quelle