apache2: Tidak dapat andal menentukan nama domain server yang sepenuhnya memenuhi syarat, menggunakan 127.0.1.1 untuk ServerName

73

Saya terus mendapatkan peringatan ini ketika saya memulai 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 ]

Ini adalah isi etc/hostsfile saya :

#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

Ini adalah isi /etc/apache2/sites-enabled/000-defaultfile saya :

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

Ketika saya pergi ke http://testproject.localhost, saya mendapatkan halaman kosong.

Adakah yang bisa melihat kesalahan saya?

pengguna35402
sumber

Jawaban:

52

Secara default Ubuntu tidak menentukan ServerName di konfigurasi Apache, karena tidak tahu apa nama server Anda. Ia mencoba membalikkan lookup pada alamat IP Anda, yang tidak menghasilkan apa-apa, jadi hanya perlu menggunakan alamat IP sebagai ServerName .

Untuk memperbaikinya, tambahkan direktif ServerName di luar host virtual apa pun - misalnya di /etc/apache2/httpd.conf, atau atur respons DNS terbalik untuk alamat IP primer Anda - dalam kasus ini, 127.0.1.1

Tidak masalah untuk mengabaikannya juga.

crb
sumber
3
Ini kontra-intuitif. Jika saya menambahkan ServerName di luar virtual host - bagaimana saya bisa melayani beberapa virtual host dari server Apache yang sama? (afterall ini, adalah titik bernama server virtual) - KECUALI, Anda mengatakan bahwa saya dapat memiliki lebih dari 1 entri ServerName di (katakanlah) /etc/apache2/httpd.conf
user35402
7
Anda kemudian dapat menambahkan ServerName / ServerAlias ​​di dalam blok VirtualHost untuk membuat VirtualHost hanya cocok dengan nama host yang Anda inginkan. Baca httpd.apache.org/docs/2.2/mod/core.html#servername untuk alamat yang lebih rendah.
crb
Saya telah mencari jawaban ini selama lebih dari satu jam. Begitu banyak omong kosong di internet mengenai hal ini, tetapi ini memperbaiki masalah saya. Thx
Mike
@Mike Anda dan orang lain jenius! Saya sudah mencari jawaban ini selama empat hari. (Ok, tidak sepenuhnya hari kerja.) +1 karena ini adalah jawaban pertama yang menjelaskan bahwa saya bisa menambahkan direktif ServerName di luar host virtual tanpa memengaruhi mereka. Dengan mengingat hal itu, solusi ReinoutS bekerja untuk saya (+1 juga untuknya).
Sony Santos
27

Inilah perbaikan cepat:

echo ServerName $HOSTNAME > /etc/apache2/conf.d/fqdn
Kembali
sumber
Terima kasih. Tidak ada perbaikan menggunakan / etc / hosts atau httpd.conf bekerja untuk saya, tetapi ini berhasil.
Ryan
1
Memperbaikinya di Ubuntu 13.04 menjalankan apache2, terima kasih!
dmanexe
16

Cara lain untuk mengatasi peringatan itu adalah dengan meletakkan nama domain yang sepenuhnya memenuhi syarat di 127.0.1.1baris /etc/hosts. Bahkan tidak harus menjadi fqdn yang benar-benar akan menyelesaikan apa pun di server dns.

127.0.1.1  hpdtp-ubuntu910.lan  hpdtp-ubuntu910

akan melakukan trik, sementara juga menjaga perilaku program apa pun yang tidak mengharapkan tambahan .lan. Urutan itu penting; nama dengan level lebih banyak harus ditentukan terlebih dahulu, seperti dalam contoh ini di mana .lanalamat tersebut datang sebelum alamat lainnya.

Ryan Ahearn
sumber
7

Solusi ini berfungsi untuk kebutuhan pengembangan saya:

Latar Belakang:

Debian Linux Sid:
Pengembangan VirtualHost: Saya memiliki 10 nama server (10 entri virtualhost di dalam situs-tersedia)

Saya memberikan masing-masing alamat IP localhost unik di dalam /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

Jika Anda akan menambahkan virtualhost lain (saya punya beberapa untuk pengembangan) tambahkan entri ke alamat IP localhost lain, dan aktifkan situs sebelum me-restart Apache 2.2:

127.0.0.11 *newhost*

Untuk setiap entri yang ingin Anda aktifkan sebagai file VirtualHost:

/ etc / apache2 / sites-available /

joe joomla schoo forrest toko penerbit studio drupal grafis wordpress

Semua virtualhosts diaktifkan / dinonaktifkan melalui nama host a2ensite / a2dissite

Untuk menekan kesalahan

Mulai ulang server web: apache2apache2: Tidak dapat secara andal menentukan nama domain yang benar-benar memenuhi syarat server, menggunakan 127.0.0.1 untuk ServerName ... menunggu apache2: Tidak dapat secara andal menentukan nama domain yang sepenuhnya memenuhi syarat server, menggunakan 127.0.0.1 untuk ServerName ''

edit httpd.conf di /etc/apache2/httpd.conf[file kosong dalam bahasa Debian]:

ServerName 127.0.1.1

Mencari kemudian diselesaikan untuk semua nama yang Anda tambahkan , komentar atau nonaktifkan baris.

Jika Anda lupa: Satu-satunya entri VirtualHost *: 80 hanya perlu berada dalam file 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>

Dalam entri VirtualHost Anda, tinggalkan VirtualHost *: 80

Contoh: virtualhost joe

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

Anda kehilangan entri ServerName tingkat konfigurasi server. Anda harus memiliki entri ServerName di luar host mana pun, agar Apache dapat digunakan sebagai default.

Menempatkan entri ServerName di dalam VirtualHost tidak akan memperbaiki masalah. Lihat Petunjuk Nama Server .

David
sumber
3

Untuk memperbaikinya, kita perlu mengedit /etc/apache2/httpd.conf atau /etc/apache2.conf dan tambahkan baris berikut:

ServerName nameofserver
niekutis
sumber
1
Kamu benar! Tetapi jawaban ini menduplikasi konten jawaban crb tanpa memberikan informasi atau wawasan baru. Saya akan mempertimbangkan untuk menghapusnya atau menambahkan lebih detail yang berbeda dari jawaban orang lain.
Royce Williams
1

Saya yakin Anda perlu menambahkan ServerNameuntuk virtual host default. Karena tidak ada di sana, ia mengambil alamat IP default. Dan itu semacam peringatan. Server web Anda masih akan berfungsi kurasa.

vpram86
sumber
Saya tidak mengerti komentar Anda. Saya sudah memiliki ServerName di file saya: <VirtualHost 127.0.0.1:8080> ServerName mysite.localhost Bisakah Anda menjelaskan komentar Anda?
1
Untuk -default- virtualhost, bukan hanya virtualhost spesifik.
Kzqai
0
  1. Anda harus menambahkan ServerName di file httpd.conf Anda menggunakan langkah-langkah berikut

    sudo gedit /etc/apache2/httpd.conf
    

    Secara default httpd.conffile akan kosong. Sekarang, cukup tambahkan baris berikut ke file.

    ServerName localhost
    

    Simpan file dan keluar dari gedit. Akhirnya restart server.

    sudo /etc/init.d/apache2 restart
    

2) Tambahkan Include httpd.confdi akhirapache2.conf

kunjalpopat
sumber
-1

Jika file httpd.conf belum ada di direktori etc / apache2 Anda setelah menginstal, maka file konfigurasi apache utama, apache2.conf, tidak akan memiliki referensi untuk itu sehingga menambahkan sesuatu ke httpd.conf yang dibuat tidak akan melakukan apa pun. Anda cukup menambahkan baris "Nama hostname Server" ke file apache2.conf sebagai gantinya.

Kartu as
sumber
-1

Apakah / etc / hosts masih memiliki entri ini. (Saya melewatkan beberapa jawaban di atas)

127.0.0.1 localhost 127.0.0.1 testproject.localhost

Kedua alamat IP 127.0.0.1 sama di sini.

Berikan alamat IP yang berbeda untuk testproject.localhost dari loopback ip subnet.

Sharad Chhetri
sumber