Pesquisa de site

Erro de configuração do Apache AH00558: não foi possível determinar com segurança o nome de domínio totalmente qualificado do servidor


Introdução

Uma mensagem Apache AH00558: Não foi possível determinar com segurança o nome de domínio totalmente qualificado dos servidores é gerada quando o Apache não está configurado com uma diretiva ServerName global. A mensagem é principalmente para fins informativos e um erro AH00558 não impedirá que o Apache seja executado corretamente.

Neste tutorial, você aprenderá como detectar uma mensagem AH00558 usando os métodos descritos no tutorial Como solucionar erros comuns do Apache no início desta série. Você também aprenderá como definir uma diretiva ServerName para resolver a mensagem.

Se você já determinou que seu servidor Apache foi afetado por uma mensagem AH00558 e gostaria de pular as etapas de solução de problemas, a etapa Configurando uma diretiva global ServerName no final deste tutorial explica como resolver o problema mensagem.

Solução de problemas usando systemctl

A primeira etapa ao solucionar problemas de uma mensagem AH00558: Não foi possível determinar com segurança o nome de domínio totalmente qualificado dos servidores é verificar o status do Apache usando systemctl. A saída de systemctl conterá, em muitos casos, todas as informações necessárias para resolver a mensagem.

Nas distribuições Linux derivadas do Ubuntu e do Debian, execute o seguinte para verificar o status do Apache:

  1. sudo systemctl status apache2.service -l --no-pager

Em sistemas derivados do Rocky Linux, Fedora e Red Hat, use este comando para examinar o status do Apache:

  1. sudo systemctl status httpd.service -l --no-pager

O sinalizador -l garantirá que systemctl exiba todo o conteúdo de uma linha, em vez de substituir linhas longas por reticências (). O sinalizador --no-pager exibirá todo o log em sua tela sem invocar uma ferramenta como less que mostra apenas uma tela de conteúdo por vez.

Você deve receber uma saída semelhante à seguinte:

Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Wed 2020-07-29 14:30:03 UTC; 33min ago Process: 34 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 46 (apache2) Tasks: 55 (limit: 2344) CGroup: /system.slice/apache2.service ├─46 /usr/sbin/apache2 -k start ├─47 /usr/sbin/apache2 -k start └─48 /usr/sbin/apache2 -k start Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Starting The Apache HTTP Server... Jul 29 14:30:03 68e2cf19f3f1 apachectl[34]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Started The Apache HTTP Server.

A linha destacada que contém a mensagem AH00558 é a importante. Essencialmente, ele informa que o Apache não conseguiu encontrar uma diretiva ServerName válida em seu arquivo de configuração, então ele usará o primeiro endereço IP que detectar. Neste exemplo, é o endereço IP público do servidor: 172.17.02. Se você estiver solucionando uma mensagem AH00558, o endereço IP detectado pode ser diferente ou pode ser um nome DNS legível por humanos.

Se sua saída systemctl contiver um valor detectado automaticamente de qualquer endereço IP ou nome de host, pule para a última seção deste tutorial, Configurando uma Diretiva ServerName Global para resolver o problema. Nessa seção, você configurará o Apache com um valor ServerName padrão seguro usando o endereço IP para localhost: 127.0.0.1.

Se sua saída systemctl não indicar um valor que você possa usar para a diretiva ServerName, a próxima seção deste tutorial explica como examinar o systemd registra usando journalctl para localizar uma mensagem AH00558.

Solução de problemas usando journalctl

Para examinar os logs systemd do Apache, você usará o comando journalctl. Ao invocar journalctl, existem dois sinalizadores específicos que o ajudarão a localizar mensagens específicas se houver um grande volume de entradas de log.

O primeiro sinalizador que você adicionará à chamada journalctl é o sinalizador --since today. Ele limitará a saída do comando para registrar entradas começando às 00:00:00 do dia atual apenas. O uso dessa opção ajudará a restringir o volume de entradas de log que você precisa examinar ao verificar erros.

O segundo sinalizador que você usará é a mesma opção --no-pager que você usou com systemctl, que exibirá o log inteiro em sua tela de uma só vez.

Em sistemas derivados do Ubuntu e do Debian, execute o seguinte comando:

  1. sudo journalctl -u apache2.service --since today --no-pager

Em sistemas derivados do Rocky Linux, Fedora e Red Hat, use este comando para inspecionar os logs:

  1. sudo journalctl -u httpd.service --since today --no-pager

Se o seu servidor Apache estiver gerando uma mensagem AH00558, procure na saída do comando journalctl linhas como as seguintes:

Output
-- Logs begin at Wed 2020-07-29 14:30:02 UTC, end at Wed 2020-07-29 14:45:03 UTC. -- . . . Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Starting The Apache HTTP Server... Jul 29 14:30:03 68e2cf19f3f1 apachectl[34]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Started The Apache HTTP Server.

A segunda linha de saída é a mensagem AH00558. A linha inclui o endereço IP público do servidor, que é o endereço que o Apache detecta automaticamente e define como padrão em tempo de execução. Com esta mensagem como confirmação de um erro AH00558, você pode prosseguir para a Diretiva Setting a Global ServerName para resolver o problema.

Caso contrário, a próxima seção explica como diagnosticar uma mensagem de erro AH00558 usando o comando apachectl.

Solução de problemas usando apachectl

Um erro AH00558: Não foi possível determinar com segurança o nome de domínio totalmente qualificado dos servidores pode ser detectado usando o utilitário apachectl do Apache. Com apachectl você pode capturar mensagens como estas antes de recarregar ou reiniciar o Apache, e você pode evitar ter que procurar nos logs systemctl e journalctl para localizar erros .

Para verificar a configuração do Apache em busca de uma mensagem AH00558, execute o seguinte comando:

  1. sudo apachectl configtest

Você deve receber uma saída como a seguinte se seu servidor for afetado por uma mensagem de erro AH00558:

Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message Syntax OK

Como nas seções anteriores deste tutorial que usaram systemctl e journalctl para localizar mensagens AH00558, a linha que contém a mensagem AH00558, destacada no exemplo anterior, é a mais importante . Observe novamente que o endereço IP 172.17.0.2 neste exemplo pode ser diferente em seu servidor.

A próxima seção deste tutorial explica como definir a diretiva ServerName para resolver as mensagens de erro AH00558.

Configurando uma Diretiva Global ServerName

Para resolver uma mensagem de erro AH00558: Não foi possível determinar com segurança o nome de domínio totalmente qualificado dos servidores, você precisará adicionar uma diretiva ServerName à sua configuração do Apache. O Apache usa a diretiva ServerName para mapear solicitações HTTP recebidas para um endereço IP ou nome de host DNS usando diretivas VirtualHost para lidar com solicitações de vários sites usando um único servidor.

A mensagem de erro informa que uma diretiva global ServerName também deve ser definida. Fazer isso garantirá que o Apache possa lidar normalmente com as solicitações recebidas que não mapeiam para um VirtualHost sem gerar erros adicionais.

Para compatibilidade máxima com várias configurações do Apache, use o valor de 127.0.0.1 para sua diretiva global ServerName. Você pode usar um endereço IP diferente ou nome DNS que corresponda à configuração do seu servidor, se necessário, mas é mais seguro usar 127.0.0.1.

Em sistemas derivados do Ubuntu e Debian, abra o arquivo /etc/apache2/apache2.conf com privilégios de root usando nano ou seu editor de texto preferido:

  1. sudo nano /etc/apache2/apache2.conf

Adicione uma linha contendo ServerName 127.0.0.1 ao final do arquivo:

. . .
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
ServerName 127.0.0.1

Em sistemas derivados do Rocky Linux, Fedora e Red Hat, abra o arquivo /etc/httpd/conf/httpd.conf com privilégios de root usando nano ou seu editor de texto preferido :

  1. sudo nano /etc/httpd/conf/httpd.conf

Adicione a linha ServerName 127.0.0.1 ao final do arquivo:

. . .
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
ServerName 127.0.0.1

Salve e feche o arquivo quando terminar. Se você usou nano, pressione CTRL + X, Y e ENTER.

Depois de adicionar a diretiva ServerName à sua configuração, execute apachectl para testar se a configuração é válida.

  1. sudo apachectl configtest

Uma invocação apachectl configtest bem-sucedida deve resultar em uma saída como esta:

Output
Syntax OK

Agora você pode recarregar a configuração do Apache usando o comando systemctl reload apropriado para sua distribuição Linux.

Nos sistemas derivados do Ubuntu e do Debian, execute o seguinte:

  1. sudo systemctl reload apache2.service

Em sistemas derivados do Rocky Linux, Fedora e Red Hat, use este comando para recarregar a configuração do Apache:

  1. sudo systemctl reload httpd.service

Depois de recarregar o Apache, a mensagem de erro AH00558 não aparecerá mais em seus logs. Você pode confirmar se as mensagens foram silenciadas executando qualquer um dos três comandos systemctl, journalctl ou apachectl demonstrados neste tutorial.

Conclusão

Neste tutorial, você aprendeu sobre as mensagens de erro AH00558: Não foi possível determinar com segurança o nome de domínio totalmente qualificado dos servidores. Embora essas mensagens não impeçam a execução do Apache, elas podem ser resolvidas definindo uma diretiva global ServerName.

Você aprendeu como procurar mensagens de erro AH00558 usando os comandos systemctl, journalctl e apachectl. Por fim, você aprendeu como editar a configuração do Apache em várias distribuições do Linux para silenciar as mensagens.

Se você quiser saber mais sobre como o Apache usa as diretivas ServerName, a documentação do Apache sobre Hosts virtuais baseados em nome explica a diretiva com mais detalhes.