O apache não será reiniciado após adicionar o arquivo conf VirtualHost, por que não?

14

Em um CentOS 7servidor, recebo o seguinte erro ao digitar sudo apachectl restartapó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 apachereiniciar se comentar a diretiva de inclusão e posso recriar o erro novamente, sem comentar a diretiva de inclusão. Como posso começar apachea usar corretamente o conteúdo do arquivo de inclusão?

A linha na parte inferior do httpd.confque desencadeia o erro é: IncludeOptional sites-enabled/*.conf. O único .confarquivo na sites-enabledpasta é 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_ssle sudo yum install httpd mod_ssllogo antes de desencadear este erro. A íntegra httpd.confpode 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.comexibe com êxito o conteúdo estático localizado em /var/www/html, que é o DocumentRootdefinido em httpd.conf. O problema parece estar vindo da VirtualHostdiretiva no arquivo de inclusão mostrado acima. Para ajudar no diagnóstico, incluí na EDIT # 3 abaixo os links para todos os .confarquivos contidos nas três que incluem diretivas httpd.conf.

EDIT # 1

Quando tento o conselho do m32 para alterar a /etc/hostnamedefinição mydomain.com, apacheainda não será reiniciado e os systemctl status httpd.serviceresultados 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/hostsarquivo, 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 configteste 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 .confarquivos padrão instalados com httpd. Ainda não modifiquei nenhum deles. Você pode visualizar cada um dos .confarquivos em um site de compartilhamento de arquivos clicando nos links abaixo:

Include conf.modules.d/*.confreferencia os seguintes arquivos no conf.modules.ddiretó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/*.confreferências os seguintes arquivos no conf.ddiretó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/*.confdiretiva e seu conteúdo foram descritos detalhadamente no PO acima.

Algum destes arquivos inclui conflitos com as VirtualHostconfigurações mydomain.com.conf?

EDIT # 4

Por sugestão do garethTheRed, mudei mydomain.com.confpara o conf.ddiretório e comecei a comentar as linhas mydomain.com.confuma a uma até httpdconseguir reiniciar. Comecei a não comentar as linhas para ver quantas linhas poderiam permanecer e httpdainda reiniciar. Consegui httpdreiniciar, mas systemctl status httpd.service -lcontinua 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 VirtualHostsintaxe que permite httpdiniciar (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 httpde 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.

CodeMed
fonte
1
Que erro "nebuloso" exato é produzido quando você adiciona uma ServerNamediretiva? Adicione à sua pergunta.
wurtel
1
Qual é a saída de apachectl configtest?
DerekC
Existe um IncludeOptionalno final do httpd.confarquivo original ? Eu acredito que existe em uma instalação padrão. O problema pode ser que você está adicionando o extra IncludeOptionalno final, o que força apachea ler o arquivo de configuração incluído duas vezes e, consequentemente, faz com que ele falhe.
garethTheRed
Para começar, você precisa mover seu mydomain.com.confpara /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 IncludeOptionalvocê adicionou httpd.conf. Você pode ignorar a AH00558mensagem por enquanto, pois ela não para apache. Em seguida, remova uma linha do seu confarquivo até encontrar o culpado (ou, alternativamente, comece com uma vazia e restaure uma linha de cada vez).
garethTheRed
1
@garethTheRed e qualquer pessoa do google, você não precisa remover o IncludeOptional sites habilitados / *. conf. Isso foi um arenque vermelho. O problema real eram os arquivos de log, conforme indicado abaixo por garethTheRed. Segui o mesmo tutorial do OP e tive o mesmo problema. A remoção das linhas do arquivo de log do arquivo conf do host virtual o corrigiu.
Louise Eggleton

Respostas:

19

Os logs estão causando os erros porque apachenão podem ser gravados na raiz do seu site. Mesmo se você corrigir as permissões de arquivo, você ainda será bloqueado pelo SELinux; que apenas permite apachegravar logs /var/log/httpd. A solução mais fácil seria alterar o site para fazer logon neste diretório - talvez com um nome de arquivo que contenha o nome do site para diferenciá-lo de outros logs.

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

Para definir o nome do host do servidor e se livrar do aviso AH00558, basta usar:

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

por exemplo

hostnamectl set-hostname --static mydomain.com
garethTheRed
fonte
Encontrei outro erro ao continuar trabalhando nisso. Você está disposto a me ajudar com isso também? Aqui está o link: unix.stackexchange.com/questions/176052/…
CodeMed
2

Eu recebi esse erro quando esqueci de definir o nome do host da máquina. Você já fez isso?
Execute este comando:

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

Verifique com hostname

Editar:
com o OP atualizado, parece que o arquivo de hosts não está configurado corretamente. Aqui está a minha aparência;

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

Tente configurá-lo para algo simples assim. Obviamente, substitua todas as informações pelas suas.
166.66.666.66com seu próprio IP
m32.me and m32com seu domínio e domínio sem o TLD

m32
fonte
Isso não resolveu o problema, ainda recebo o AH00558erro quando uso seu arquivo de hosts de exemplo, com meu ipe mydomain.com mydomain.
CodeMed