Stało się to, że zmieniła się składnia plików konfiguracyjnych w apache2.4.
Źródło: To samo przytrafiło mi się po aktualizacji do 13.10
pliki conf.d
Wszystkie istniejące pliki /etc/apache2/conf.d
powinny zostać przeniesione do /etc/apache2/conf-available
.
Teraz działają w ten sam sposób sites
i mods
działają. Po prostu umieść pliki conf w conf-available
folderze i włącz ten, który chcesz a2enconf <config-file-name>
.
Przykład:
Miałem plik, conf.d/httpd.conf
który miał dyrektywę ServerName.
Aby to zadziałało, musiałem przenieść go do conf-available
katalogu i włączyć ręcznie.
sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd
pliki witryn
Wcześniej pliki /etc/apache2/sites-available
nie miały rozszerzenia. Na przykład /etc/apache2/sites-available/default
. Teraz .conf
wymagane jest rozszerzenie.
Przykład:
Jeśli tak /etc/apache2/sites-available/some-site
, w 13.04 możesz po prostu włączyć to za pomocą sudo a2ensite some-site
. Teraz pojawi się komunikat o błędzie
BŁĄD: strona jakaś strona nie istnieje!
Aby to naprawić, dodaj a .conf
do wszystkich plików konfiguracyjnych w sites-available
. Możesz zrobić to samo w sites-enabled
lub możesz usunąć wszystkie pliki i ponownie włączyć je ręcznie.
Zalecam wykonywanie ich ręcznie, ponieważ prawdopodobnie musisz naprawić każdy VHost (następny krok).
sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;
jeśli zdecydowałeś się zrobić to ręcznie:
sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name
Dyrektywy hosta wirtualnego:
pozwalają / odmawiają kontra Wymagaj
Jeśli masz następujące rzeczy:
<Directory /path/to/your/site/>
order allow,deny
allow from all
</Directory>
Powinien stać się:
<Directory /path/to/your/site/>
Require all granted
</Directory>
Aby uzyskać więcej informacji, sprawdź na komentarzach przez DaveRandom na zasadzie odpowiedzi na przepełnienie stosu.
Mówiąc najprościej, jeśli uaktualniłeś do apache2.4 i zachowałeś starą httpd.conf
wersję apache2.2, dyrektywa zezwalająca powinna nadal działać poprawnie. Jeśli zaktualizowałeś swój httpd.conf
(co sugerowałbym), otrzymasz 403 błędów, dopóki nie zmienisz dyrektyw Order
/ Allow
/ Deny
na ich odpowiedniki Require
.
Opcje katalogu
Jeśli miał opcje Directory pamiętać, że wszystkie one muszą być poprzedzany z +
lub -
czy żaden z nich w ogóle. Połączenie obu nie jest dozwolone:
Przykład:
Jest to dozwolone:
<Directory /path/to/your/site/>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
Tak też jest (zauważ, że oba te przykłady nie robią tego samego, poprzedni wyłącza MultiViews
opcję, następny nie):
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks MultiViews
</Directory>
To nie jest już dozwolone:
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks -MultiViews
</Directory>
Ostatnia opcja konfiguracji wyrzuci błąd składniowy, mówiąc:
Albo wszystkie opcje muszą zaczynać się od + lub -, albo żadna opcja nie może.
Uruchom ponownie apache
Gdy wszystko zostanie zrobione, musisz ponownie uruchomić serwer Apache, aby zmiany odniosły skutek:
sudo apache2ctl restart
Szczegółową instrukcję aktualizacji z wersji 2.2 do 2.4 można znaleźć w oficjalnej dokumentacji.
httpd.conf
pliku aniconf.d
katalogu. Ale jestapache2.conf
plik. Próbowałem przenieść go doconf-available
katalogu i po ponownym uruchomieniu apache2 wystąpił następujący błąd: apache2: Nie można otworzyć pliku konfiguracyjnego /etc/apache2/apache2.conf: Brak takiego pliku lub katalogu - Co może być przyczyną?