Na CentOS 7
serwerze pojawia się następujący błąd podczas pisania sudo apachectl restart
po 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ę apache
zrestartować się, jeśli skomentuję dyrektywę include, i mogę ponownie odtworzyć błąd, cofając komentarz dyrektywy include. Jak mogę apache
zacząć poprawnie korzystać z zawartości pliku dołączanego?
Linia na dole httpd.conf
, która wyzwala błąd jest: IncludeOptional sites-enabled/*.conf
. Jedyny .conf
plik w sites-enabled
folderze 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.conf
to to samo, co fabrycznie zainstalowane, z httpd
wyjątkiem jednej linii zawierającej dyrektywę powyżej. Wiem, ponieważ to zrobiłem sudo yum remove httpd mod_ssl
i sudo yum install httpd mod_ssl
tuż przed wywołaniem tego błędu. Całość httpd.conf
moż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.com
powodzeniem wyświetla statyczną zawartość /var/www/html
, która jest DocumentRoot
zdefiniowana w httpd.conf
. Problem wydaje się wynikać z VirtualHost
dyrektywy w pliku dołączonym pokazanym powyżej. Aby pomóc w diagnozie, w EDIT # 3 poniżej umieściłem linki do wszystkich .conf
plików zawartych w trzech dyrektywach dołączonych do httpd.conf
.
EDYCJA 1
Kiedy próbuję porady m32, aby zmienić /etc/hostname
definicję mydomain.com
, apache
nadal nie uruchamia się ponownie, a systemctl status httpd.service
wyniki 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/hosts
pliku, 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 configtest
i 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 .conf
pliki instalowane z httpd
. Nie zmodyfikowałem jeszcze żadnego z nich. Możesz wyświetlić każdy z .conf
plików w witrynie udostępniania plików, klikając poniższe łącza:
Include conf.modules.d/*.conf
odwołuje się do następujących plików w conf.modules.d
katalogu:
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/*.conf
odwołuje się do następujących plików w conf.d
katalogu:
autoindex.conf
ssl.conf
userdir.conf
welcome.conf
Istnieje również plik README, który tutaj pomijam .
Ponadto IncludeOptional sites-enabled/*.conf
dyrektywa i jej treść zostały szczegółowo opisane w PO powyżej.
Czy któreś z tych plików są sprzeczne z VirtualHost
ustawieniami w mydomain.com.conf
?
EDYCJA # 4
Po sugestii garethTheRed, przeniosłem mydomain.com.conf
się do conf.d
katalogu, a następnie zacząłem komentować linie mydomain.com.conf
jeden po drugim, aż httpd
byłem w stanie zrestartować się. Następnie zacząłem nie komentować wierszy, aby zobaczyć, ile wierszy może pozostać i httpd
nadal się restartuję. Byłem w stanie httpd
zrestartować się, ale systemctl status httpd.service -l
nadal 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
VirtualHost
Składni, która pozwala httpd
na 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 httpd
a 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.
apachectl configtest
?
IncludeOptional
na końcu jest oryginalny httpd.conf
plik? Wierzę, że jest domyślna instalacja. Problemem może być to, że dodajesz dodatkowy IncludeOptional
na końcu, który zmusza apache
do dwukrotnego odczytania dołączonego pliku konfiguracyjnego, co powoduje jego awarię.
mydomain.com.conf
do /etc/httpd/conf.d
(gdzie wszyscy inni są) i usuwać /etc/httpd/sites-enabled
(to rzecz Debian / Ubuntu) i IncludeOptional
dodano do httpd.conf
. Możesz na razie zignorować AH00558
wiadomość, ponieważ się nie kończy apache
. Następnie usuń wiersz ze swojego conf
pliku, aż znajdziesz winowajcę (lub alternatywnie, zacznij od pustego i przywróć po jednym wierszu na raz).
ServerName
dyrektywy? Dodaj to do swojego pytania.