[aman@aman-Inspiron-1440:~$ apache2
[Mon Apr 21 17:36:38.019213 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Mon Apr 21 17:36:38.019345 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Mon Apr 21 17:36:38.019370 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Mon Apr 21 17:36:38.019385 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Mon Apr 21 17:36:38.019414 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.028756 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029032 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029056 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}
To jest zawartość /etc/apache2/apache2.conf
pliku.
Odpowiedzi:
Miałem ten problem: przyczyna jest w pliku
gdzie zmienił się root:
przed aktualizacją =
/var/www
po aktualizacji =
/var/www/html
Edytuj więc, aby zmodyfikować ten plik
I uruchom ponownie apache
źródło
000-default.conf
pliku.html
podfolder już istnieje, co w moim przypadku jest właściwie nieistotne, ponieważ wszystkie moje strony używają VirtualHostsDocumentRoot
ustawieniem.Miałem ten problem, mimo że apache działał dla mnie. Po prostu chciałem zrobić szybko
znaleźć wartość
SERVER_CONFIG_FILE
. Ponieważ nie jest to już sposób na uruchomienie apache2, kończy się niepowodzeniem z błędami publikowanymi przez OP. Szybkim i brudnym obejściem jest po prostu ustawienie envvarów, których najpierw brakuje:To ustawia zmienną APACHE_LOCK_DIR i wszystko jest w porządku (
-D SERVER_CONFIG_FILE="apache2.conf"
).źródło
apache2 -S
nie działał . Wszystko naprawione.apache2
jako root naprawiło problem.apache2ctl -V
Objawy i rozwiązanie
Na wielu stronach internetowych lub forach Q&A ludzie mylą objawy i rzeczywiste przyczyny. Właśnie zaktualizowałem serwer Ubuntu z 13.10 do 14.04.1 i napotkałem dokładnie te same objawy opisane przez OP, w tym:
1- apache najwyraźniej nie działa. Zmienna konfiguracji 2- apache niezdefiniowana. 3 - błąd składniowy wymieniony przez PO.
Problem polega na tym, że nie wszystkie z tych symptomów są rzeczywiście związane z rzeczywistym problemem i służą jedynie jako odwrócenie uwagi od tych, którzy starają się jak najlepiej pomóc.
Różne problemy z rootowaniem mogą powodować, że administratorzy odwiedzają takie witryny z mniej więcej tym samym opisem: „Uaktualniłem system operacyjny, a teraz apache nie działa ...”
Jedna konkretna przyczyna
Mając wszystkie dokładnie takie same objawy, jak PO, pociągało mnie to pytanie. Niestety jedyną odpowiedzią, która zawierała prawidłową wskazówkę dotyczącą prawdziwej głównej przyczyny mojego problemu, była zanegowana (-1), opublikowana przez user1469291 z powtórzeniem 1 !! Przeszukałem więc inne strony internetowe, dopóki nie znalazłem jasnego wyjaśnienia problemu (a tym samym rozwiązania).
Poniższe rozwiązanie może nie rozwiązać prawdziwego problemu PO, ale jestem pewien, że pomoże innym, którzy mogą zainteresować się tym pytaniem z tych samych powodów, co ja.
/etc/apache2/apache2.conf zawiera:
co oznacza, że zostaną załadowane tylko pliki konfiguracji witryny w / etc / apache2 / sites-enabled / ending .conf. Starsze dowiązanie symboliczne w tym katalogu zostanie zignorowane.
Kiedyś był po prostu obsługiwany przez strony / *. Dlatego wszystkie moje pliki konfiguracji wirtualnego hosta, które po prostu nazwałem ww1.example.com, ww2.example.com itp., Działały, ale nagle i początkowo w niewytłumaczalny sposób przestały działać po aktualizacji.
Więc zmień powyższą dyrektywę i ponownie załaduj apache lub, tak jak ja, ręcznie usuń wszystkie starsze dowiązania symboliczne w witrynach z włączoną funkcją /, zmień nazwę wszystkich plików w witrynach dostępnych /, aby dodać przyrostek .conf, a następnie ponownie włącz każdy z nich strona indywidualnie.
Ponadto domyślne dyrektywy w apache.conf są bardziej rygorystyczne:
Jeśli więc hostujesz swoje wirtualne witryny w / home / user / gdzieś, pamiętaj, aby odpowiednio zastąpić dyrektywę.
źródło
Patrząc uważnie na swój problem, po prostu biegniesz
apache2
. Aby uruchomić apache w Ubuntu, uruchom następujące polecenie:Konfiguracja Apache jest podzielona na wiele plików, jeden z tych plików to zmienne środowiskowe. Gdy tylko uruchomisz
apache2
, te zmienne nie są ustawione.Skrypt apache2ctl załaduje zmienne (i w razie potrzeby zrobi też inne rzeczy) przed uruchomieniem apache
apache2 -k start
.źródło
sudo apache2ctl restart
zamiast tego.Edytuj konfigurację
sudo leafpad /etc/apache2/apache2.conf
:lub usuń plik.
źródło
Odpowiedź augustina zadziałała dla mnie, gdy wszystkie moje wirtualne hosty zniknęły po aktualizacji serwera z 12.04 LTS do 14.04 LTS. Głosowałbym za tym, gdybym miał taką reputację.
Następujące polecenie doda
.conf
sufiks do wszystkich dowiązań symbolicznych,/etc/apache2/sites-enabled
które jeszcze go nie mają:Ponadto nastąpiła zmiana z używania składni
Allow from
/ na moduł mod_authz_host ( tutaj jest link do dokumentacji 2.2).Deny from
Require
Następujące polecenie edytuje typowe użycie polecenia
Order allow, deny
followAllow from all
by toRequire all granted
zamiast:źródło
W rzeczywistości docroot zmienia się z precyzyjnego na sprawdzony z / var / www na / var / www / html. Słabe jest to, że skrypt do-release-upgrade nie regresuje docroot z powrotem.
Odp .: Albo jest poprawny, ale HTML jest bardziej konwencjonalny. CentOS ma na to wpływ. Strona „to działa” jest teraz również bardziej dojrzała.
B) Nie musisz używać / var / www / html, ale jeśli robisz ...
C) I może być łatwiej budować od podstaw i migrować.
D) Ten objaw wystąpi, jeśli „sudo apache2 -k wdzięczny” po wyjęciu z pudełka w Trusty, uaktualnisz czy nie z powodu braku envvarów? Zamiast tego użyj „sudo apache2ctl start / stop / restart”.
źródło
W moim przypadku:
html
Podfolder co/var/www/
już istnieje, ale wciąż byłem coraz błąd:AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf
/home/{user}/sites/
Zamiast domyślnego/var/www/html
apache2 -v
)Jak rozwiązałem problem w pięciu łatwych krokach:
W
/etc/apache2/apache2.conf
dodałem następujące po linii 169:Upewniłem się, że moja konfiguracja wirtualnego hosta o nazwie
website.conf
at/etc/apache2/sites-available
została skopiowana z domyślnej000-default.conf
i wyglądała następująco:Ponownie załadowałem moją witrynę (
sudo a2dissite website && sudo a2ensite website
) i serwer, a początkowy błąd zniknął. WOOHOO! Pojawiło się jednak nowe: „AH00035: dostęp do / odmowa dostępu (ścieżka systemu plików„ / home / {użytkownik} / witryny ”), ponieważ brakuje uprawnień do wyszukiwania w komponencie ścieżki”. Rozwiązałem to w kroku 4.Nowy problem wynikał z uprawnień, więc po prostu ustawiłem każdy z katalogów prowadzących do
website
folderu nachmod 755
. Każdy jeden!home
Folderu, {user} folderu, folder witryn, a nawet mój folder wwwPo odświeżeniu przeglądarki
website.dev
wszystko ładuje się dobrze!PS Mam już skonfigurowane
website.dev
w moim/etc/hosts
pliku.Dodatkowa wskazówka: Aby sprawdzić uprawnienia do określonego folderu, możesz użyć polecenia
stat -c %a /path/to/file/or/folder
. Aby sprawdzić uprawnienia do każdej części katalogu, użyjnamei -m /path/to/final/folder
.źródło