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:
- 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:
- 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:
- 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:
- 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:
- sudo apachectl configtest
Você deve receber uma saída como a seguinte se seu servidor for afetado por uma mensagem de erro AH00558:
OutputAH00558: 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:
- 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 :
- 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.
- sudo apachectl configtest
Uma invocação apachectl configtest
bem-sucedida deve resultar em uma saída como esta:
OutputSyntax 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:
- 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:
- 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.