In un CentOS 7
server, ottengo il seguente errore quando scrivo sudo apachectl restart
dopo aver aggiunto un file include nella parte inferiore di httpd.conf
:
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.
Quando digito sudo systemctl status httpd.service -l
, il risultato è:
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.
Posso apache
riavviare se commento la direttiva include e posso ricreare nuovamente l'errore annullando il commento alla direttiva include. Come posso apache
iniziare a utilizzare correttamente i contenuti del file include?
La linea in fondo httpd.conf
che fa scattare l'errore è: IncludeOptional sites-enabled/*.conf
. L'unico .conf
file nella sites-enabled
cartella è mydomain.com.conf
, che ha i seguenti contenuti:
<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>
Lo httpd.conf
è lo stesso di quello che viene pre-installato con httpd
, ad eccezione di quello linea di direttiva include sopra. Lo so perché l'ho fatto sudo yum remove httpd mod_ssl
e sudo yum install httpd mod_ssl
subito prima di innescare questo errore. Il tutto httpd.conf
può essere letto in un sito di condivisione di file facendo clic su questo link .
Ho riscontrato questo problema seguendo esplicitamente i passaggi di questa esercitazione .
Quando commento il file include, http/mydomain.com
serve con successo il contenuto statico che si trova in /var/www/html
, che è DocumentRoot
definito in httpd.conf
. Il problema sembra provenire dalla VirtualHost
direttiva nel file include mostrato sopra. Per facilitare la diagnosi, ho incluso nell'EDIT # 3 i collegamenti seguenti a tutti i .conf
file contenuti nelle tre direttive di inclusione in httpd.conf
.
EDIT # 1
Quando provo il consiglio di m32 di modificare il /etc/hostname
da definire mydomain.com
, apache
ancora non si riavvia e i systemctl status httpd.service
risultati sono i seguenti:
[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.
EDIT # 2
Ho anche provato il consiglio di eyoung100 di cambiare il contenuto del mio /etc/hosts
file, come definito nella seguente immagine, ma ho ancora lo stesso errore definito in EDIT # 1 sopra.
EDIT # 3
Su richiesta di DerekC, ho corso sudo apachectl configtest
e ottenuto:
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
Inoltre, secondo il suggerimento di GarethTheRed, ho esaminato le direttive di inclusione in httpd.conf . Esistono tre direttive di inclusione in httpd.conf . Ho elencato i tre seguenti, insieme a tutti i file che si trovano nella cartella di ciascuna direttiva. Questi sono tutti i .conf
file standard installati con httpd
. Non ho ancora modificato nessuno di essi. È possibile visualizzare ciascuno dei .conf
file in un sito di condivisione file facendo clic sui collegamenti seguenti:
Include conf.modules.d/*.conf
fa riferimento ai seguenti file nella conf.modules.d
directory:
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
riferimenti i seguenti file nella conf.d
directory:
autoindex.conf
ssl.conf
userdir.conf
welcome.conf
C'è anche un file README che sto omettendo qui.
Inoltre, la IncludeOptional sites-enabled/*.conf
direttiva e i suoi contenuti sono stati delineati accuratamente nel PO di cui sopra.
Qualcuno di questi include file in conflitto con le VirtualHost
impostazioni in mydomain.com.conf
?
EDIT # 4
Per il suggerimento di garethTheRed, sono passato mydomain.com.conf
alla conf.d
directory e ho iniziato a commentare le righe mydomain.com.conf
una per una fino a quando non httpd
sono riuscito a riavviare. Ho quindi iniziato a non commentare le righe per vedere quante righe potevano rimanere e sono httpd
ancora riavviate. Sono stato in grado di httpd
riavviare, ma systemctl status httpd.service -l
continua a produrre lo stesso avviso:
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
La VirtualHost
sintassi che consente httpd
di iniziare (sebbene continui a generare l'avviso sopra) è la seguente:
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAlias mydomain.com
DocumentRoot /var/www/mydomain.com/public_html
</VirtualHost>
Si noti che ho dovuto omettere le seguenti righe, la cui presenza intensifica l'avviso in una completa incapacità di avviare http:
# ErrorLog /var/www/mydomain.com/error.log
# CustomLog /var/www/mydomain.com/requests.log combined
Inoltre, ho corso sudo journalctl -xelu httpd
e il terminale ha risposto ripetendo più volte quanto segue:
--
-- 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)
Nota: i risultati sopra riportati rimangono gli stessi indipendentemente dal fatto che io utilizzi il file hosts di eyoung100 o il file host di m32. Per rispondere a questa domanda, penso che dovrei essere in grado di creare file di registro ed evitare anche l'avviso servername. Altrimenti, temo che i passaggi successivi della configurazione di httpd saranno soggetti a errori persistenti.
apachectl configtest
?
IncludeOptional
alla fine del httpd.conf
file originale ? Credo che ci sia su un'installazione predefinita. Il problema potrebbe essere che stai aggiungendo un extra IncludeOptional
alla fine, che forza apache
a leggere due volte il file di configurazione incluso e di conseguenza non riesce.
mydomain.com.conf
a /etc/httpd/conf.d
(in cui tutti gli altri sono) ed eliminare /etc/httpd/sites-enabled
(che è una cosa Debian / Ubuntu) e IncludeOptional
si è aggiunto a httpd.conf
. AH00558
Per ora puoi ignorare il messaggio perché non si ferma apache
. Quindi rimuovere una riga dal conf
file fino a trovare il colpevole (o in alternativa, iniziare con uno vuoto e ripristinare una riga alla volta).
ServerName
direttiva? Aggiungilo alla tua domanda.