apache2: Não foi possível determinar com segurança o nome de domínio totalmente qualificado do servidor, usando 127.0.1.1 para ServerName

73

Continuo recebendo esse aviso quando (re) inicio o Apache.

* 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 [ OK ]

Este é o conteúdo do meu etc/hostsarquivo:

#127.0.0.1  hpdtp-ubuntu910
#testproject.localhost  localhost.localdomain   localhost
#127.0.1.1  hpdtp-ubuntu910

127.0.0.1   localhost
127.0.0.1   testproject.localhost
127.0.1.1   hpdtp-ubuntu910



# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Este é o conteúdo do meu /etc/apache2/sites-enabled/000-defaultarquivo:

<VirtualHost *:80>
  ServerName testproject.localhost
  DocumentRoot "/home/morpheous/work/websites/testproject/web"
  DirectoryIndex index.php
  <Directory "/home/morpheous/work/websites/testproject/web">
    AllowOverride All
    Allow from All
  </Directory>

  Alias /sf /lib/vendor/symfony/symfony-1.3.2/data/web/sf
  <Directory "/lib/vendor/symfony/symfony-1.3.2/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

Quando vou http://testproject.localhost, recebo uma página em branco.

Alguém pode identificar o que estou fazendo de errado?

user35402
fonte

Respostas:

52

Por padrão, o Ubuntu não especifica um ServerName na configuração do Apache, porque não sabe qual é o nome do seu servidor. Ele tenta uma pesquisa inversa no seu endereço IP, que não retorna nada; portanto, ele só precisa usar o endereço IP como o ServerName .

Para corrigi-lo, adicione uma diretiva ServerName fora de qualquer host virtual - por exemplo /etc/apache2/httpd.conf, em ou configure uma resposta DNS reversa para o seu endereço IP principal - neste caso, 127.0.1.1

É perfeitamente bom ignorá-lo também.

crb
fonte
3
Isso é contra-intuitivo. Se eu adicionar o ServerName fora de qualquer host virtual - como posso servir vários hosts virtuais no mesmo servidor Apache? (isto afinal, é o ponto de servidores virtuais nomeados) - A menos, você está dizendo que eu posso ter mais de 1 entrada ServerName em (digamos) /etc/apache2/httpd.conf
user35402
7
Você pode adicionar ServerName / ServerAlias ​​dentro dos blocos do VirtualHost para fazer com que o VirtualHost corresponda apenas aos nomes de host que você deseja. Leia httpd.apache.org/docs/2.2/mod/core.html#servername para obter informações detalhadas.
Crb
Estou procurando por essa resposta há mais de uma hora. Tanta porcaria na internet sobre isso, mas isso resolveu o meu problema. Thx
Mike
@ Mike você e os outros são gênios! Estou procurando por esta resposta por quatro dias. (Ok, dias não totalmente úteis). +1 porque esta é a primeira resposta que explica que eu posso adicionar uma diretiva ServerName fora de hosts virtuais sem afetá-los. Com isso em mente, a solução da ReinoutS funcionou para mim (+1 para ele também).
Sony Santos
27

Aqui está uma solução rápida:

echo ServerName $HOSTNAME > /etc/apache2/conf.d/fqdn
ReinoutS
fonte
Obrigado. Nenhuma das correções usando / etc / hosts nem httpd.conf funcionou para mim, mas funcionou.
Ryan
11
Corrigido no Ubuntu 13.04 executando o apache2, obrigado!
dmanexe 16/05
16

Outra maneira de contornar esse aviso é colocar um nome de domínio totalmente qualificado na 127.0.1.1linha de /etc/hosts. Ele nem precisa ser um fqdn que realmente resolva qualquer coisa em um servidor DNS.

127.0.1.1  hpdtp-ubuntu910.lan  hpdtp-ubuntu910

faria o truque, além de preservar o comportamento de qualquer programa que não estivesse esperando o extra .lan. A ordem é importante; nomes com mais níveis devem ser especificados primeiro, como neste exemplo em que o .lanendereço vem antes do outro endereço.

Ryan Ahearn
fonte
7

Esta solução funciona para minhas necessidades de desenvolvimento:

Fundo:

Debian Linux Sid:
Desenvolvimento do VirtualHost: Eu tenho 10 nomes de servidores (10 entradas de host virtual dentro de sites disponíveis)

Atribuí a cada um um endereço IP de host local exclusivo /etc/hosts:

127.0.0.1   joe   localhost.localdomain   localhost
127.0.1.1   joe
127.0.1.2   joomla
127.0.1.3   schmoo
127.0.1.4   forrest
127.0.1.5   store
127.0.1.6   publisher
127.0.1.7   studios
127.0.1.8   drupal
127.0.1.9   graphics
127.0.1.10  wordpress
...

The following lines are desirable for IPv6 capable hosts

::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Se você for adicionar outro host virtual (eu tenho alguns para desenvolvimento), adicione uma entrada a outro endereço IP do host local e ative o site antes de reiniciar o Apache 2.2:

127.0.0.11 *newhost*

Para cada entrada que você deseja ativar como um arquivo VirtualHost:

/ etc / apache2 / sites-available /

joe joomla schoo forrest store editor estúdios drupal graphics wordpress

Todos os virtualhosts são ativados / desativados através do nome de host a2ensite / a2dissite

Para suprimir o erro

Reiniciando o servidor da Web: apache2apache2: Não foi possível determinar com segurança o nome de domínio totalmente qualificado do servidor, usando 127.0.0.1 para ServerName ... aguardando apache2: Não foi possível determinar com segurança o nome de domínio totalmente qualificado do servidor, usando 127.0.0.1 para ServerName ''

edite httpd.conf em /etc/apache2/httpd.conf[arquivo vazio no Debian]:

ServerName 127.0.1.1

A pesquisa é resolvida para todos os nomes que você adicionar , comentar ou desativar na linha.

Caso você esqueça: A única entrada VirtualHost *: 80 precisa estar apenas no arquivo ports.conf ,

/etc/apache2/ports.conf

**NameVirtualHost *:80**
Listen 80

<IfModule mod_ssl.c>
   # If you add NameVirtualHost *:443 here, you will also have to change
   # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
   # to <VirtualHost *:443>
   # Server Name Indication for SSL named virtual hosts is currently not
   # supported by MSIE on Windows XP.
   Listen 443
</IfModule>

<IfModule mod_gnutls.c>
   Listen 443
</IfModule>

Na sua entrada do VirtualHost, deixe de fora o VirtualHost *: 80

Exemplo: virtualhost joe

<VirtualHost *:80>
    **ServerAlias joe**
    **...**
</VirtualHost>
Marc Driftmeyer
fonte
5

Está faltando uma entrada ServerName no nível de configuração do servidor. Você precisa ter uma entrada ServerName fora de qualquer host, para que o Apache use como padrão.

Colocar uma entrada ServerName dentro de um VirtualHost não corrigirá o problema. Consulte Diretiva ServerName .

David
fonte
3

Para corrigi-lo, precisamos editar o /etc/apache2/httpd.conf ou /etc/apache2.conf e adicionar a seguinte linha:

ServerName nameofserver
niekutis
fonte
11
Você está certo! Mas essa resposta duplica o conteúdo da resposta da crb sem fornecer nenhuma informação ou insight novo. Eu consideraria excluí-lo ou adicionar mais detalhes diferentes das respostas de outras pessoas.
Royce Williams
1

Eu acredito que você precisa adicionar ServerNamepara o host virtual padrão. Como não está lá, está usando o endereço IP padrão. E é um tipo de aviso. Seu servidor da web ainda estará funcional, eu acho.

vpram86
fonte
Eu não entendo o seu comentário. Eu já tenho ServerName no meu arquivo: <VirtualHost 127.0.0.1:8080> ServerName mysite.localhost Você poderia esclarecer seu comentário?
11
Para o host virtual -default-, não apenas um host virtual específico.
Kzqai 11/11
0
  1. você precisa adicionar o ServerName no seu arquivo httpd.conf usando as seguintes etapas

    sudo gedit /etc/apache2/httpd.conf
    

    Por padrão, o httpd.confarquivo ficará em branco. Agora, basta adicionar a seguinte linha ao arquivo.

    ServerName localhost
    

    Salve o arquivo e saia de gedit. Finalmente, reinicie o servidor.

    sudo /etc/init.d/apache2 restart
    

2) Adicione Include httpd.confno final deapache2.conf

kunjalpopat
fonte
-1

Se um arquivo httpd.conf ainda não existir no diretório etc / apache2 após a instalação, o arquivo de configuração principal do apache, apache2.conf, não terá uma referência a ele, portanto, adicionar algo ao httpd.conf criado não será suficiente. qualquer coisa. Você pode simplesmente adicionar a linha "ServerName hostname" ao arquivo apache2.conf.

Ás
fonte
-1

O / etc / hosts ainda tem essas entradas. (Eu pulei algumas respostas acima)

127.0.0.1 localhost 127.0.0.1 testproject.localhost

O endereço IP 127.0.0.1 é o mesmo aqui.

Dê um endereço IP diferente para testproject.localhost da sub-rede IP de loopback.

Sharad Chhetri
fonte