Em um CentOS 7
servidor, recebo o seguinte erro ao digitar sudo apachectl restart
após adicionar um arquivo de inclusão na parte inferior de 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
, o resultado é:
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
reiniciar se comentar a diretiva de inclusão e posso recriar o erro novamente, sem comentar a diretiva de inclusão. Como posso começar apache
a usar corretamente o conteúdo do arquivo de inclusão?
A linha na parte inferior do httpd.conf
que desencadeia o erro é: IncludeOptional sites-enabled/*.conf
. O único .conf
arquivo na sites-enabled
pasta é mydomain.com.conf
, que possui o seguinte conteúdo:
<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>
O httpd.conf
é o mesmo que o que vem pré-instalado com httpd
, exceto para a linha incluem directiva acima. Eu sei porque eu fiz sudo yum remove httpd mod_ssl
e sudo yum install httpd mod_ssl
logo antes de desencadear este erro. A íntegra httpd.conf
pode ser lida em um site de compartilhamento de arquivos clicando neste link .
Encontrei esse problema ao seguir explicitamente as etapas deste tutorial .
Quando eu comento o arquivo de inclusão, http/mydomain.com
exibe com êxito o conteúdo estático localizado em /var/www/html
, que é o DocumentRoot
definido em httpd.conf
. O problema parece estar vindo da VirtualHost
diretiva no arquivo de inclusão mostrado acima. Para ajudar no diagnóstico, incluí na EDIT # 3 abaixo os links para todos os .conf
arquivos contidos nas três que incluem diretivas httpd.conf
.
EDIT # 1
Quando tento o conselho do m32 para alterar a /etc/hostname
definição mydomain.com
, apache
ainda não será reiniciado e os systemctl status httpd.service
resultados serão os seguintes:
[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
Eu também tentei o conselho do eyoung100 para alterar o conteúdo do meu /etc/hosts
arquivo, conforme definido na imagem a seguir, mas ainda recebo o mesmo erro definido na EDIT # 1 acima.
EDIT # 3
Por solicitação da DerekC, eu corri sudo apachectl configtest
e obtive:
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
Além disso, por sugestão de GarethTheRed, examinei as diretivas de inclusão no httpd.conf . Existem três diretivas de inclusão no httpd.conf . Listei os três abaixo, juntamente com todos os arquivos localizados na pasta de cada diretiva. Estes são todos os .conf
arquivos padrão instalados com httpd
. Ainda não modifiquei nenhum deles. Você pode visualizar cada um dos .conf
arquivos em um site de compartilhamento de arquivos clicando nos links abaixo:
Include conf.modules.d/*.conf
referencia os seguintes arquivos no conf.modules.d
diretório:
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
referências os seguintes arquivos no conf.d
diretório:
autoindex.conf
ssl.conf
userdir.conf
welcome.conf
Há também um arquivo README que estou omitindo aqui.
Além disso, a IncludeOptional sites-enabled/*.conf
diretiva e seu conteúdo foram descritos detalhadamente no PO acima.
Algum destes arquivos inclui conflitos com as VirtualHost
configurações mydomain.com.conf
?
EDIT # 4
Por sugestão do garethTheRed, mudei mydomain.com.conf
para o conf.d
diretório e comecei a comentar as linhas mydomain.com.conf
uma a uma até httpd
conseguir reiniciar. Comecei a não comentar as linhas para ver quantas linhas poderiam permanecer e httpd
ainda reiniciar. Consegui httpd
reiniciar, mas systemctl status httpd.service -l
continua a produzir o mesmo aviso:
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
A VirtualHost
sintaxe que permite httpd
iniciar (embora continue gerando o aviso acima) é a seguinte:
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAlias mydomain.com
DocumentRoot /var/www/mydomain.com/public_html
</VirtualHost>
Observe que tive que omitir as seguintes linhas, cuja presença transforma o aviso em uma completa incapacidade de iniciar o http:
# ErrorLog /var/www/mydomain.com/error.log
# CustomLog /var/www/mydomain.com/requests.log combined
Além disso, corri sudo journalctl -xelu httpd
e o terminal respondeu repetindo as seguintes vezes:
--
-- 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: Os resultados acima permanecem os mesmos, independentemente de eu usar o arquivo hosts do eyoung100 ou o arquivo host do m32. Para que esta pergunta seja respondida, acho que devo conseguir criar arquivos de log e também evitar o aviso do nome do servidor. Caso contrário, receio que as etapas subsequentes da configuração do httpd sejam propensas a erros persistentes.
apachectl configtest
?
IncludeOptional
no final do httpd.conf
arquivo original ? Eu acredito que existe em uma instalação padrão. O problema pode ser que você está adicionando o extra IncludeOptional
no final, o que força apache
a ler o arquivo de configuração incluído duas vezes e, consequentemente, faz com que ele falhe.
mydomain.com.conf
para /etc/httpd/conf.d
(onde estão todos os outros) e excluir /etc/httpd/sites-enabled
(isso é uma coisa do Debian / Ubuntu) e o que IncludeOptional
você adicionou httpd.conf
. Você pode ignorar a AH00558
mensagem por enquanto, pois ela não para apache
. Em seguida, remova uma linha do seu conf
arquivo até encontrar o culpado (ou, alternativamente, comece com uma vazia e restaure uma linha de cada vez).
ServerName
diretiva? Adicione à sua pergunta.