apache non si riavvia dopo aver aggiunto il file conf di VirtualHost, perché no?


14

In un CentOS 7server, ottengo il seguente errore quando scrivo sudo apachectl restartdopo 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 apacheriavviare se commento la direttiva include e posso ricreare nuovamente l'errore annullando il commento alla direttiva include. Come posso apacheiniziare a utilizzare correttamente i contenuti del file include?

La linea in fondo httpd.confche fa scattare l'errore è: IncludeOptional sites-enabled/*.conf. L'unico .conffile nella sites-enabledcartella è 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_ssle sudo yum install httpd mod_sslsubito prima di innescare questo errore. Il tutto httpd.confpuò 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.comserve con successo il contenuto statico che si trova in /var/www/html, che è DocumentRootdefinito in httpd.conf. Il problema sembra provenire dalla VirtualHostdirettiva nel file include mostrato sopra. Per facilitare la diagnosi, ho incluso nell'EDIT # 3 i collegamenti seguenti a tutti i .conffile contenuti nelle tre direttive di inclusione in httpd.conf.

EDIT # 1

Quando provo il consiglio di m32 di modificare il /etc/hostnameda definire mydomain.com, apacheancora non si riavvia e i systemctl status httpd.servicerisultati 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/hostsfile, 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 configteste 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 .conffile standard installati con httpd. Non ho ancora modificato nessuno di essi. È possibile visualizzare ciascuno dei .conffile in un sito di condivisione file facendo clic sui collegamenti seguenti:

Include conf.modules.d/*.conffa riferimento ai seguenti file nella conf.modules.ddirectory: 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/*.confriferimenti i seguenti file nella conf.ddirectory: autoindex.conf
ssl.conf
userdir.conf
welcome.conf
C'è anche un file README che sto omettendo qui.

Inoltre, la IncludeOptional sites-enabled/*.confdirettiva e i suoi contenuti sono stati delineati accuratamente nel PO di cui sopra.

Qualcuno di questi include file in conflitto con le VirtualHostimpostazioni in mydomain.com.conf?

EDIT # 4

Per il suggerimento di garethTheRed, sono passato mydomain.com.confalla conf.ddirectory e ho iniziato a commentare le righe mydomain.com.confuna per una fino a quando non httpdsono riuscito a riavviare. Ho quindi iniziato a non commentare le righe per vedere quante righe potevano rimanere e sono httpdancora riavviate. Sono stato in grado di httpdriavviare, ma systemctl status httpd.service -lcontinua 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 VirtualHostsintassi che consente httpddi 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 httpde 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.


1
Quale esatto errore "nebuloso" viene prodotto quando si aggiunge una ServerNamedirettiva? Aggiungilo alla tua domanda.
Wurtel,

1
Qual è l'output di apachectl configtest?
DerekC

C'è un IncludeOptionalalla fine del httpd.conffile originale ? Credo che ci sia su un'installazione predefinita. Il problema potrebbe essere che stai aggiungendo un extra IncludeOptionalalla fine, che forza apachea leggere due volte il file di configurazione incluso e di conseguenza non riesce.
garethTheRed,

Per cominciare, è necessario spostare il vostro mydomain.com.confa /etc/httpd/conf.d(in cui tutti gli altri sono) ed eliminare /etc/httpd/sites-enabled(che è una cosa Debian / Ubuntu) e IncludeOptionalsi è aggiunto a httpd.conf. AH00558Per ora puoi ignorare il messaggio perché non si ferma apache. Quindi rimuovere una riga dal conffile fino a trovare il colpevole (o in alternativa, iniziare con uno vuoto e ripristinare una riga alla volta).
garethTheRed,

1
@garethTheRed e chiunque da Google, non è necessario rimuovere IncludeOptional siti abilitato / *. conf. Era un'aringa rossa. Il vero problema erano i file di registro come indicato di seguito da garethTheRed. Ho seguito lo stesso tutorial dell'OP e ho avuto lo stesso problema. La rimozione delle righe del file di registro dal file di configurazione dell'host virtuale lo ha risolto.
Louise Eggleton,

Risposte:


19

I registri stanno causando gli errori perché apachenon è possibile scrivere sulla radice del sito Web. Anche se dovessi correggere i permessi dei file, saresti comunque bloccato da SELinux; che consente solo apachedi scrivere i log in /var/log/httpd. La soluzione più semplice sarebbe quella di cambiare il tuo sito Web per accedere a questa directory, magari con un nome file che contiene il nome del sito Web al fine di differenziarlo dagli altri registri.

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

Per impostare il nome host del server ed eliminare l'avviso AH00558, utilizzare semplicemente:

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

per esempio

hostnamectl set-hostname --static mydomain.com

Ho riscontrato un altro errore mentre continuo a lavorare su questo. Sei disposto ad aiutarmi anche con questo? Ecco il link: unix.stackexchange.com/questions/176052/…
CodeMed,

2

Ho ricevuto questo errore quando ho dimenticato di impostare il nome host per la macchina. L'hai fatto?
Esegui questo comando:

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

Verificare con hostname

Modifica:
con l'OP aggiornato, sembra che il tuo file hosts non sia impostato correttamente. Ecco come appare il mio;

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

Prova a impostarlo su qualcosa di semplice. Naturalmente, sostituisci tutte le informazioni con le tue.
166.66.666.66con il proprio IP
m32.me and m32con il proprio dominio e dominio senza TLD


Ciò non ha risolto il problema, ricevo ancora l' AH00558errore quando utilizzo il file hosts di esempio, con my ipe mydomain.com mydomain.
CodeMed,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.