apache nie uruchomi się ponownie po dodaniu pliku conf VirtualHost, dlaczego nie?

14

Na CentOS 7serwerze pojawia się następujący błąd podczas pisania sudo apachectl restartpo dodaniu pliku dołączania na dole httpd.conf:

Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

Kiedy piszę sudo systemctl status httpd.service -l, wynik jest następujący:

httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Tue 2014-12-23 20:10:37 EST; 2min 15s ago
  Process: 2101 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 2099 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 2099 (code=exited, status=1/FAILURE)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"

Dec 23 20:10:37 ip-address httpd[2099]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Dec 23 20:10:37 ip-address systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 20:10:37 ip-address systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 20:10:37 ip-address systemd[1]: Unit httpd.service entered failed state.

Mogę apachezrestartować się, jeśli skomentuję dyrektywę include, i mogę ponownie odtworzyć błąd, cofając komentarz dyrektywy include. Jak mogę apachezacząć poprawnie korzystać z zawartości pliku dołączanego?

Linia na dole httpd.conf, która wyzwala błąd jest: IncludeOptional sites-enabled/*.conf. Jedyny .confplik w sites-enabledfolderze to mydomain.com.conf, który ma następującą zawartość:

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
    ErrorLog /var/www/mydomain.com/error.log
    CustomLog /var/www/mydomain.com/requests.log combined
</VirtualHost>

Jest httpd.confto to samo, co fabrycznie zainstalowane, z httpdwyjątkiem jednej linii zawierającej dyrektywę powyżej. Wiem, ponieważ to zrobiłem sudo yum remove httpd mod_ssli sudo yum install httpd mod_ssltuż przed wywołaniem tego błędu. Całość httpd.confmożna odczytać na stronie udostępniania plików , klikając ten link .

Ten problem napotkałem, gdy wyraźnie wykonałem czynności opisane w tym samouczku .

Kiedy komentuję plik dołączania, z http/mydomain.compowodzeniem wyświetla statyczną zawartość /var/www/html, która jest DocumentRootzdefiniowana w httpd.conf. Problem wydaje się wynikać z VirtualHostdyrektywy w pliku dołączonym pokazanym powyżej. Aby pomóc w diagnozie, w EDIT # 3 poniżej umieściłem linki do wszystkich .confplików zawartych w trzech dyrektywach dołączonych do httpd.conf.

EDYCJA 1

Kiedy próbuję porady m32, aby zmienić /etc/hostnamedefinicję mydomain.com, apachenadal nie uruchamia się ponownie, a systemctl status httpd.servicewyniki są następujące:

[sudo_user_account@server-ip-address ~]$ sudo systemctl status httpd.service -l
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Tue 2014-12-23 14:25:35 EST; 20s ago
  Process: 31993 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 31991 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 31991 (code=exited, status=1/FAILURE)
   Status: "Total requests: 1; Current requests/sec: 0; Current traffic:   0 B/sec"

Dec 23 14:25:35 hostname systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 14:25:35 hostname systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 14:25:35 hostname systemd[1]: Unit httpd.service entered failed state.  

EDYCJA 2

Próbowałem także porady eyoung100, aby zmienić zawartość mojego /etc/hostspliku, jak zdefiniowano na poniższym obrazku, ale nadal otrzymuję ten sam błąd, który został zdefiniowany w EDYCJI nr 1 powyżej.

EDYCJA 3

Na prośbę Dereka C pobiegłem sudo apachectl configtesti dostałem:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Ponadto, zgodnie z sugestią GarethTheRed, zbadałem dyrektywy dołączające w httpd.conf . Istnieją trzy dyrektywy dołączające w httpd.conf . Poniżej wymieniłem trzy, wraz ze wszystkimi plikami znajdującymi się w folderze każdej dyrektywy. Są to wszystkie standardowe .confpliki instalowane z httpd. Nie zmodyfikowałem jeszcze żadnego z nich. Możesz wyświetlić każdy z .confplików w witrynie udostępniania plików, klikając poniższe łącza:

Include conf.modules.d/*.confodwołuje się do następujących plików w conf.modules.dkatalogu: 00-base.conf
00-dav.conf
00-lua.conf
00-mpm.conf
00-proxy.conf
00-ssl.conf
00-systemd.conf
01-cgi.conf

IncludeOptional conf.d/*.confodwołuje się do następujących plików w conf.dkatalogu: autoindex.conf
ssl.conf
userdir.conf
welcome.conf
Istnieje również plik README, który tutaj pomijam .

Ponadto IncludeOptional sites-enabled/*.confdyrektywa i jej treść zostały szczegółowo opisane w PO powyżej.

Czy któreś z tych plików są sprzeczne z VirtualHostustawieniami w mydomain.com.conf?

EDYCJA # 4

Po sugestii garethTheRed, przeniosłem mydomain.com.confsię do conf.dkatalogu, a następnie zacząłem komentować linie mydomain.com.confjeden po drugim, aż httpdbyłem w stanie zrestartować się. Następnie zacząłem nie komentować wierszy, aby zobaczyć, ile wierszy może pozostać i httpdnadal się restartuję. Byłem w stanie httpdzrestartować się, ale systemctl status httpd.service -lnadal wyświetla to samo ostrzeżenie:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message

VirtualHostSkładni, która pozwala httpdna rozpoczęcie (choć nadal generować powyższe ostrzeżenie) przedstawia się następująco:

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
</VirtualHost>  

Zauważ, że musiałem pominąć następujące wiersze, których obecność przekształca ostrzeżenie w całkowitą niemożność uruchomienia http:

# ErrorLog /var/www/mydomain.com/error.log
# CustomLog /var/www/mydomain.com/requests.log combined

Uruchomiłem też, sudo journalctl -xelu httpda terminal odpowiedział, powtarzając wiele razy:

-- 
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:43 server-ip-address systemd[1]: Stopped The Apache HTTP Server.
-- Subject: Unit httpd.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:48 server-ip-address systemd[1]: Starting The Apache HTTP Server...
-- Subject: Unit httpd.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has begun starting up.
Dec 24 17:48:48 server-ip-address httpd[10364]: AH00558: httpd: Could not reliably d
Dec 24 17:48:48 server-ip-address systemd[1]: Started The Apache HTTP Server.
-- Subject: Unit httpd.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has finished starting up.
-- 
-- The start-up result is done.
lines 887-909/909 (END)

Uwaga: powyższe wyniki pozostają takie same, niezależnie od tego, czy korzystam z pliku hosts eyoung100, czy pliku hosta m32. Aby odpowiedzieć na to pytanie, myślę, że powinienem być w stanie utworzyć pliki dziennika, a także uniknąć ostrzeżenia o nazwie serwera. W przeciwnym razie obawiam się, że kolejne kroki konfiguracji httpd będą podatne na błędy.

CodeMed
źródło
1
Jaki dokładnie błąd „mglisty” pojawia się po dodaniu ServerNamedyrektywy? Dodaj to do swojego pytania.
wurtel
1
Jaka jest wydajność apachectl configtest?
DerekC
Czy IncludeOptionalna końcu jest oryginalny httpd.confplik? Wierzę, że jest domyślna instalacja. Problemem może być to, że dodajesz dodatkowy IncludeOptionalna końcu, który zmusza apachedo dwukrotnego odczytania dołączonego pliku konfiguracyjnego, co powoduje jego awarię.
garethTheRed
Na początek, trzeba przenieść mydomain.com.confdo /etc/httpd/conf.d(gdzie wszyscy inni są) i usuwać /etc/httpd/sites-enabled(to rzecz Debian / Ubuntu) i IncludeOptionaldodano do httpd.conf. Możesz na razie zignorować AH00558wiadomość, ponieważ się nie kończy apache. Następnie usuń wiersz ze swojego confpliku, aż znajdziesz winowajcę (lub alternatywnie, zacznij od pustego i przywróć po jednym wierszu na raz).
garethTheRed
1
@garethTheRed i ktokolwiek z Google'a, nie musisz usuwać IncludeOptional-enable / *. conf. To był czerwony śledź. Prawdziwym problemem były pliki dziennika, jak wskazano poniżej przez garethTheRed. Wykonałem ten sam samouczek co OP i miałem ten sam problem. Usunięto linie pliku dziennika z pliku conf wirtualnego hosta.
Louise Eggleton

Odpowiedzi:

19

Dzienniki powodują błędy, ponieważ apachenie można zapisać w katalogu głównym witryny. Nawet jeśli chcesz naprawić uprawnienia do plików, nadal będziesz blokowany przez SELinux; który pozwala tylko apachena zapisywanie logów /var/log/httpd. Najłatwiejszym rozwiązaniem jest zmiana witryny w taki sposób, aby logowała się do tego katalogu - być może z nazwą pliku zawierającą nazwę witryny w celu odróżnienia jej od innych dzienników.

ErrorLog /var/log/httpd/mydomain_com_error.log
CustomLog /var/log/httpd/mydomain_com_requests.log combined

Aby ustawić nazwę hosta serwera i pozbyć się ostrzeżenia AH00558, po prostu użyj:

hostnamectl set-hostname --static <FQDN of your machine>

na przykład

hostnamectl set-hostname --static mydomain.com
garethTheRed
źródło
Podczas kontynuowania pracy nad tym wystąpił kolejny błąd. Czy ty też chcesz mi pomóc? Oto link: unix.stackexchange.com/questions/176052/…
CodeMed
2

Wystąpił ten błąd, gdy zapomniałem ustawić nazwę hosta dla komputera. Zrobiłeś to?
Uruchom to polecenie:

echo 'example.com' >> /etc/hostname  

Zweryfikuj za pomocą hostname

Edycja:
przy zaktualizowanym OP wygląda na to, że plik hosts nie jest poprawnie skonfigurowany. Oto jak wygląda moja;

127.0.0.1 localhost.localdomain localhost
# Auto-generated hostname. Please do not remove this comment.
166.66.666.66 m32.me m32
::1     ip6-localhost ip6-loopback

Spróbuj ustawić coś tak prostego. Oczywiście zastąp wszystkie informacje własnymi.
166.66.666.66z własnym adresem IP
m32.me and m32w domenie i domeną bez TLD

m32
źródło
To nie rozwiązało problemu, nadal AH00558pojawia się błąd, gdy używam twojego przykładowego pliku hosts z moim ipi mydomain.com mydomain.
CodeMed