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ą?httpd.conf
był tylko przykład. Możliwe, że nie będziesz mieć żadnych plików konfiguracyjnych wconf.d
katalogu, w takim przypadku po prostu pomiń ten krok. Co do tegoapache2.conf
, nie należy go przenosić doconf-available
katalogu. Jest to główny plik konfiguracyjny apache, a jego ścieżka powinna być /etc/apache2/apache2.conf i nie można go zmieniać.config.d
lubsites available
folder. zobacz wszystkie pliki konfiguracyjne tutaj: imgur.com/WczXp3vZakładam, że strony internetowe działają na twoim serwerze Ubuntu.
Sprawdź httpd.conf, aby upewnić się, że ustawienie DocumentRoot wskazuje właściwe miejsce.
Sprawdź, czy uprawnienia do pliku w folderze, do którego odwołuje się DocumentRoot, może odczytać użytkownik, na którym działa serwer WWW.
Sprawdź, czy masz odpowiedni plik index.html / index.htm itp. I czy serwer sieciowy nie próbuje zrobić listy katalogów.
źródło
Miałem podobne problemy.
Nie mogłem uruchomić apache 2.4, chyba że użyłem „Allow from All”, było to denerwujące, ponieważ chciałem zapewnić czystą przerwę od wersji <2.4. Po wielu próbach i błędach oraz wielu poszukiwaniach zauważyłem odniesienie do access_compat i zdałem sobie sprawę, że jest to tylko dla kompatybilności. Chociaż dokumentacja apache mówi, że można używać obu, zaleca się, aby nie używać.
Usunąłem ten moduł z pliku ładowania / etc / sysconfig / apache2, co natychmiast rozwiązało mój problem.
Pozdrawiam Liam
źródło
Udostępniam pliki z niestandardowego katalogu, więc aby aktualizacja działała, musiałem edytować /etc/apache2/apache2.conf i dodać: Opcje Indeksy FollowSymLinks Zezwalaj na brak Brak Wymagane wszystkie przyznane
Po tym i zalecanych zmianach powyżej błąd 403 zniknął.
źródło