Erro do Apache "Não foi possível determinar com segurança o nome de domínio totalmente qualificado do servidor"

432

Quando eu reinicio meu servidor Apache usando o comando

sudo /etc/init.d/apache2 restart

Estou tendo o erro a seguir:

Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2:
Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

O servidor está usando 127.0.1.1 em vez de 127.0.0.1? O que causa esse erro?

Deepu
fonte

Respostas:

509

6 # 13.04 e mais antigo

Este é apenas um aviso amigável e não é realmente um problema (como algo que não funciona).

Se você vai para:

/etc/apache2/apache2.conf

e insira:

ServerName localhost   

e reinicie o apache digitando no terminal:

sudo systemctl reload apache2

o aviso desaparecerá.

Se você tiver um nome dentro, /etc/hostnametambém poderá usá-lo em vez de localhost.


E usa 127.0.1.1se estiver dentro do seu /etc/hosts:

127.0.0.1 localhost
127.0.1.1 myhostname

Método preferido

Solução de problemas do Apache

Se você receber este erro:

apache2: Could not determine the server's fully qualified domain name, 
using 127.0.0.1 for ServerName

use um editor de texto como "sudo nano" na linha de comando ou "gksudo gedit" na área de trabalho para criar um novo arquivo,

sudo nano /etc/apache2/conf.d/fqdn

ou

gksu "gedit /etc/apache2/conf.d/fqdn"

então adicione

ServerName localhost

para o arquivo e salve. Tudo isso pode ser feito em um único comando com o seguinte:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn

Mas no Ubuntu 14.04:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf
 sudo a2enconf fqdn

Não esqueça o ".conf" (sem não funcionará).

Rinzwind
fonte
2
Isso também é mencionado na documentação de instalação do Ubuntu LAMP para solução de problemas do Apache . Lá, eles recomendam a criação de um /etc/apache2/conf.d/fqdn arquivo com ServerName localhostnele
icc97
Resposta muito boa - mas eu também recomendo colocá-lo no diretório conf.d :)
cwd
3
/etc/apache2/conf.d/não existe após a minha instalação lamp-server^no 14.04
redanimalwar
@redanimalwar Para a 13.10 e mais recente, consulte a resposta da @ Starx abaixo.
Dan
3
Para a última etapa (criação do sym-link na versão 14.04), recomendo sudo a2enconf fqdnque tecnicamente seja o mesmo.
Nuala
176

13.10 ou mais recente

A partir do Apache 2.4 - que está disponível por padrão a partir da 13.10 - você não pode usar o método para adicionar um arquivo de configuração no conf.ddiretório.

O Apache não usa mais o conf.ddiretório. Todos os arquivos de configuração são armazenados no /etc/apache2/conf-availablediretório e todos os arquivos de configuração agora devem ter uma .confextensão.

Para resolver esta mensagem no Apache 2.4, precisamos criar um arquivo de configuração dentro do diretório conf-available. Por exemplo servername.conf.

sudo vi /etc/apache2/conf-available/servername.conf

E dentro disso, só precisamos adicionar uma linha

ServerName localhost

Você pode combinar os dois comandos anteriores em um com:

echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf

Se você deseja usar um nome de domínio ou qualquer outro nome, dependendo do requisito, basta substituir o localhostque você precisar. Em seguida, você precisa habilitar essa configuração. Para isso, você precisa executar o seguinte comando:

sudo a2enconf servername

a2enconfé um comando para ativar um arquivo de configuração no Apaches 2.4. Observe também que servernameo comando acima é do nome do arquivo de configuração servername.conf. Se o seu arquivo de configuração fosse ngenericserver.conf, você teria que escrever sudo a2enconf ngenericserver.

Após isso, recarregue o servidor e a mensagem acima não causará mais problemas.

sudo service apache2 reload

ou

sudo apache2ctl graceful

Agora, depois disso, você verá que a mensagem não será mostrada novamente e o problema será corrigido.

Starx
fonte
3
Alguém sabe como fazer o Apache dizer em qual arquivo de configuração está tendo problemas? Não sei por que os desenvolvedores nunca pensam em colocar isso em suas mensagens de erro - dificilmente é preciso muito código!
John Y
Se eu tenho um fqdm da Internet para este servidor, este é o lugar para colocá-lo? ou seja, devo substituir o myhost.org no lugar do localhost?
CPBL
1
@CPBL Esse será o nome do servidor padrão para todos os sites. Se você possui apenas um site, é tudo o que precisa fazer. Se você possui vários sites em seu servidor, também precisará adicionar a diretiva servername para cada site em sua respectiva configuração de host virtual.
Dan
1
Funciona em 14.04 LTS.
Parto 29/06
1
O seu link citado parece estar morto, por favor, corrija.
Fredrick Gauss
28

O Apache2 também pode obter o FQDN de um nome de host do sistema configurado corretamente, em vez de codificado no arquivo de configuração do apache. A codificação codificada também causará confusão se o nome do host for alterado. Na verdade, você não precisa de ServerNamediretivas httpd.confnem de arquivos de configuração do apache.

Coloque o seguinte em /etc/hosts:

# IPv4 and IPv6 localhost aliases
127.0.0.1 hostname.domainname.com  hostname  localhost
::1       hostname.domainname.com  hostname  localhost

onde hostname.domainname.comestá o FQDN da sua máquina.

Juntamente com um nome de host configurado corretamente em /etc/hostname/ou com hostnamectl, isso também ajudará outros serviços em sua máquina a serem executados corretamente (por exemplo, o prompt de login, exibido em This is hostname.domainname.comvez de This is hostname.unknown_domain).

Andrew Mao
fonte
5
+1 para "um nome de host do sistema configurado corretamente". Eu queria configurar o servidor corretamente. Isso também fixa o meu erro no log[warn] RSA server certificate CommonName (CN) <fqdn> does NOT match server name!?
transistor1
Você acha que isso deve funcionar com o Apache 2.2.22? Eu ainda estou recebendo "Não foi possível determinar com fiabilidade nome de domínio completo do servidor, usando 127.0.1.1 para ServerName"
David Winiecki
É hostname localhostsuposto ser myubuntuservername localhost? Ou a string literal hostname localhost? Você não era claro em sua resposta
Jonathan
2
Essa deve ser a resposta aceita. Parece que você pode precisar associar o FQDN ao endereço IP estático, em vez disso 127.0.0.1.
Skippy le Grand Gourou
1
Esta foi a melhor resposta para mim no Ubuntu 18.04. Desejo que a documentação seja consistente, embora o nome de domínio totalmente qualificado não seja a mesma terminologia aqui ou em qualquer lugar. se meu nome de domínio totalmente qualificado fosse google.com e meu servername fosse google, minha entrada em / etc / hosts seria 127.0.0.1 google.com google Eu poderia substituir a linha localhost e o host local do anúncio no final desta linha, se eu desejo. Eu usei isso: digitalocean.com/community/tutorials/…
NZ Dev
26
  • Abra um terminal
  • Abra o /etc/apache2/httpd.confarquivo:

    sudo editor /etc/apache2/httpd.conf # [1]
    
  • Por padrão, ele ficaria em branco. Basta adicionar a seguinte linha:

    ServerName localhost
    
  • Salve o arquivo e saia

  • Reinicie o servidor

    sudo service apache2 restart
    

[1] Inicie o editor padrão, consulte sudo update-alternatives --config editor

verde
fonte
após a execução do último comando, ocorre o seguinte erro ** Reiniciando o servidor da Web apache2 / usr / sbin / apache2ctl: 87: ulimit: limite de configuração de erro (operação não permitida) / usr / sbin / apache2ctl: 87: ulimit: limite de configuração de erro (operação não permitido) (13) Permissão negada: make_sock: não foi possível vincular ao endereço 0.0.0.0:80 sem soquetes de escuta disponíveis, desligando Não é possível abrir logs A ação 'start' falhou. O log de erros do Apache pode ter mais informações. [falha] ** @ green7
Deepu 14/02
tente 'sudo service apache2 restart'
waterloo2005 15/04
20

Na nova versão do apache2, você apenas segue o comando como este:

sudo nano /etc/apache2/apache2.conf

Adicione o seguinte final de arquivo da nova linha:

ServerName localhost

Em seguida, reinicie o apache2:

sudo service apache2 restart

Está feito.

empugandring
fonte
6

Acho que é um pouco melhor criar um novo arquivo /etc/conf.dpara modificar um apache2.confou outro httpd.conf.

É uma preferência pessoal que mantém minhas alterações de configuração separadas do pacote de distribuição. Portanto, as atualizações são menos complicadas.

Eu crio o arquivo /etc/apache2/conf.d/AAserverNamee ele contém apenas:

ServerName myhost.mycomain.tld

As outras sugestões certamente funcionam também.

areeda
fonte
2

No Ubuntu 16.04:

sudo -i

echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf server-name
Eduardo Cuomo
fonte
1

Adicionar, acrescentar ServerName localhost

Para

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

Não é um erro. É apenas um lembrete de amigo

Serem
fonte
1

A especificação ServerName localhostde seus arquivos de configuração fora das seções do host virtual é a maneira de fazer isso.

Algumas outras respostas sugerem que você deve modificar /etc/apache2/httpd.conf. Este arquivo é substituído quando o apache é atualizado do apt. Para a configuração do Apache que você não deseja sobrescrever, crie um novo arquivo. Aqui está o "caminho do Debian" para fazer essa mudança de configuração:

# create the configuration file in the "available" section
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf
# enable it by creating a symlink to it from the "enabled" section
sudo a2enconf servername
# restart the server
sudo service apache2 restart

Isso é basicamente o mesmo que a resposta de Stark, mas de forma fácil de copiar e colar o script. Originalmente, eu postei isso em uma pergunta marcada como duplicada: https://askubuntu.com/a/432408

Stephen Ostermiller
fonte
1

No Ubuntu 16.04 :

Adicione ServerName localhostao arquivo httpd.confusando o seguinte comando.

sudo vi  /etc/apache2/httpd.conf

Em seguida, inclua esta linha Include httpd.confno final deste arquivo

sudo vi /etc/apache2/apache2.conf

Verifique se há erros de sintaxe novamente

sudo apache2ctl configtest

Agora você deve obter

Syntax OK

Agora você pode reiniciar o servidor normalmente, recarregando a configuração

sudo service apache2 reload

ou mate o processo e comece de novo

sudo service apache2 restart
daumie
fonte
0

No Ubuntu 11.10, eu vi essa mensagem, juntamente com uma inicialização travada, porque meu disco estava cheio. Um dos arquivos de log ficou desonesto . Provavelmente não havia realmente um problema com o Apache, mas essa mensagem foi a última pista dada antes da inicialização do sistema.

Para corrigir o problema, tive que inicializar no modo de recuperação e remover o arquivo de log rebelde.

nobar
fonte
0

Se você estiver usando o bash e quiser dependências mínimas (e apenas desejar uma linha para o script do ponto de entrada, se estiver usando o Docker como eu), essas duas opções deverão funcionar.

Se você deseja localhost:

echo "ServerName localhost" >> /etc/apache2/apache2.conf

Se você deseja o nome do host existente:

echo "ServerName $(cat /etc/hostname)" >> /etc/apache2/apache2.conf

Isso usa os operadores de redirecionamento do bash para anexar a sequência ao final do arquivo. O Eco insere automaticamente a nova linha, para que você esteja pronto.

Andrew Odri
fonte
0

Execute o seguinte comando:

apachectl -t -D DUMP_INCLUDES

para determinar o caminho para seu httpd.confarquivo de configuração, edite esse arquivo e remova o comentário / modifique a linha que especifica o valor da ServerNameopção, por exemplo

ServerName localhost

Para o servidor web, use o nome DNS registrado (por exemplo example.com).

Se o seu host não tiver um nome DNS registrado, digite seu endereço IP aqui.

kenorb
fonte
0

No Ubuntu 16.04 :

Adicione ServerName localhostao arquivo httpd.confusando o seguinte comando.

sudo vi  /etc/apache2/httpd.conf

Em seguida, inclua esta linha Include httpd.confno final deste arquivo

sudo vi /etc/apache2/apache2.conf

Verifique se há erros de sintaxe novamente

sudo apache2ctl configtest

Agora você deve obter

Syntax OK

Agora você pode reiniciar o servidor normalmente, recarregando o serviço sudo de configuração apache2 restart

daumie
fonte