apache2: impossible de déterminer de manière fiable le nom de domaine complet du serveur, à l'aide de 127.0.1.1 pour ServerName

73

Je continue à recevoir cet avertissement lorsque je (re) lance 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 ]

Voici le contenu de mon etc/hostsdossier:

#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

Voici le contenu de mon /etc/apache2/sites-enabled/000-defaultdossier:

<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>

Quand je vais à http://testproject.localhost, je reçois une page blanche.

Quelqu'un peut-il repérer ce que je fais mal?

utilisateur35402
la source

Réponses:

52

Par défaut, Ubuntu ne spécifie pas un nom de serveur dans la configuration Apache, car il ne sait pas quel est le nom de votre serveur. Il tente une recherche inversée sur votre adresse IP, qui ne renvoie rien, il doit simplement utiliser l'adresse IP comme ServerName .

Pour résoudre ce problème, ajoutez une directive ServerName en dehors de tout hôte virtuel - par exemple, dans /etc/apache2/httpd.confou définissez une réponse DNS inverse pour votre adresse IP principale - dans ce cas, 127.0.1.1.

C'est parfaitement correct de l'ignorer aussi.

crb
la source
3
C'est contre-intuitif. Si j'ajoute ServerName en dehors de tout hôte virtuel, comment puis-je servir plusieurs hôtes virtuels à partir du même serveur Apache? (cet après tout, c'est le point des serveurs virtuels nommés) - SAUF SI, vous dites que je peux avoir plus d'une entrée ServerName dans (par exemple) /etc/apache2/httpd.conf
user35402
7
Vous pouvez ensuite ajouter ServerName / ServerAlias ​​à l'intérieur des blocs VirtualHost pour que ce dernier ne corresponde qu'aux noms d'hôte souhaités. Lisez httpd.apache.org/docs/2.2/mod/core.html#servername pour le compte à rebours.
Crb
Je cherche cette réponse depuis plus d'une heure. Tant de conneries sur Internet à ce sujet, mais cela a résolu mon problème. Thx
Mike
@ Mike, vous et les autres êtes un génie! J'ai cherché cette réponse pendant quatre jours. (Ok, pas de jours de travail complet). +1 car c'est la première réponse qui explique que je puisse ajouter une directive ServerName en dehors des hôtes virtuels sans les affecter. Dans cet esprit, la solution de ReinoutS a fonctionné pour moi (+1 pour lui aussi).
Sony Santos
27

Voici une solution rapide:

echo ServerName $HOSTNAME > /etc/apache2/conf.d/fqdn
ReNoutS
la source
Merci. Aucun des correctifs utilisant / etc / hosts ni httpd.conf n'a fonctionné pour moi, mais cela a fonctionné.
Ryan le
1
Correction du problème sous Ubuntu 13.04 sous Apache2, merci!
dmanexe
16

Un autre moyen d'éviter cet avertissement est de mettre un nom de domaine complet sur la 127.0.1.1ligne de /etc/hosts. Il n'est même pas nécessaire que ce soit un fqdn qui résoudrait quoi que ce soit sur un serveur DNS.

127.0.1.1  hpdtp-ubuntu910.lan  hpdtp-ubuntu910

ferait l'affaire, tout en préservant le comportement de tous les programmes qui ne s'attendaient pas à un extra .lan. L'ordre est important. les noms avec plus de niveaux doivent être spécifiés en premier, comme dans cet exemple où l' .lanadresse vient avant l'autre adresse.

Ryan Ahearn
la source
7

Cette solution fonctionne pour mes besoins de développement:

Contexte:

Debian Linux Sid:
Développement VirtualHost: J'ai 10 noms de serveur (10 entrées virtualhost dans sites-available)

J'ai attribué à chacun une adresse IP locale unique unique à l'intérieur /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

Si vous allez ajouter un autre virtualhost (j'en ai plusieurs pour le développement), ajoutez une entrée à une autre adresse IP localhost et activez le site avant de redémarrer Apache 2.2:

127.0.0.11 *newhost*

Pour chaque entrée que vous souhaitez activer en tant que fichier VirtualHost:

/ etc / apache2 / sites-available /

joe joomla schoo forrest magasin éditeur studios drupal graphiques wordpress

Tous les hôtes virtuels sont activés / désactivés via le nom d’hôte a2ensite / a2dissite

Pour supprimer l'erreur

Redémarrage du serveur Web: apache2apache2: impossible de déterminer de manière fiable le nom de domaine complet du serveur, à l'aide de 127.0.0.1 pour NomServeur ... en attente apache2: impossible de déterminer de manière fiable le nom de domaine complet du serveur, à l'aide de 127.0.0.1 pour NomServeur ''

éditez httpd.conf dans /etc/apache2/httpd.conf[fichier vide dans Debian]:

ServerName 127.0.1.1

La recherche est ensuite résolue pour tous les noms que vous ajoutez , commentez ou désactivez en bas de la ligne.

Si vous oubliez: la seule entrée VirtualHost *: 80 doit uniquement figurer dans le fichier 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>

Dans votre entrée VirtualHost, laissez VirtualHost *: 80.

Exemple: virtualhost joe

<VirtualHost *:80>
    **ServerAlias joe**
    **...**
</VirtualHost>
Marc Driftmeyer
la source
6

La configuration ServerNamedans httpd.conf n'a pas fonctionné pour moi. Je l' ai fixé par la mise ServerName 127.0.0.1en /etc/apache2/conf.d/name.

Je suis sous Ubuntu 12.10 Alpha3 et ai ServerNamedéfini dans les deux points.

Source: http://linuxconfig.net/manual-howto/error-solution-n'a pas - pu être trouvé de manière fiable-déterminer-les - serveurs - fully - qualified-nom-domaine - nom.html

pseudo
la source
Cool, cela a fonctionné pour moi aussi, avait le même problème.
Priyank Bolia
5

Il vous manque une entrée ServerName au niveau de la configuration du serveur. Vous devez disposer d'une entrée ServerName en dehors de tout hôte pour qu'Apache puisse l'utiliser par défaut.

Mettre une entrée ServerName dans un VirtualHost ne résoudra pas le problème. Voir Directive ServerName .

David
la source
3

Pour résoudre ce problème, nous devons éditer le fichier /etc/apache2/httpd.conf ou /etc/apache2.conf et ajouter la ligne suivante:

ServerName nameofserver
Niekutis
la source
1
Vous avez raison! Mais cette réponse duplique le contenu de la réponse de crb sans fournir de nouvelles informations ou perspectives. J'envisagerais de le supprimer ou d'ajouter des détails différents des réponses des autres personnes.
Royce Williams
1

Je crois que vous devez ajouter ServerNamepour l'hôte virtuel par défaut. Comme ce n'est pas là, il prend l'adresse IP par défaut. Et c'est une sorte d'avertissement. Votre serveur Web sera toujours fonctionnel, je suppose.

vpram86
la source
Je ne comprends pas ton commentaire. J'ai déjà ServerName dans mon fichier: <VirtualHost 127.0.0.1:8080> ServerName mysite.localhost Pourriez-vous clarifier votre commentaire?
1
Pour l'hôte virtuel par défaut, pas seulement un hôte virtuel spécifique.
Kzqai
0
  1. vous devez ajouter ServerName dans votre fichier httpd.conf en procédant comme suit

    sudo gedit /etc/apache2/httpd.conf
    

    Par défaut, le httpd.conffichier sera vide. Maintenant, ajoutez simplement la ligne suivante au fichier.

    ServerName localhost
    

    Enregistrez le fichier et quittez gedit. Enfin, redémarrez le serveur.

    sudo /etc/init.d/apache2 restart
    

2) Ajouter Include httpd.confà la fin deapache2.conf

Kunjalpopat
la source
-1

Si un fichier httpd.conf n'existe pas déjà dans votre répertoire etc / apache2 après l'installation, le fichier de configuration principal d'Apache, apache2.conf, ne sera pas référencé. Il ne sera donc pas nécessaire d'ajouter quoi que ce soit à un httpd.conf créé. n'importe quoi. Vous pouvez simplement ajouter la ligne "nom_hôte ServerName" au fichier apache2.conf.

Ace
la source
-1

Est-ce que / etc / hosts a toujours ces entrées? (J'ai sauté des réponses ci-dessus)

127.0.0.1 localhost 127.0.0.1 testproject.localhost

Les deux adresses IP 127.0.0.1 sont les mêmes ici.

Donnez une adresse IP différente à testproject.localhost du sous-réseau ip loopback.

Sharad Chhetri
la source