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?