apache2: SunucuAdı için 127.0.1.1'i kullanarak sunucunun tam etki alanı adını güvenilir bir şekilde belirleyemedi


73

Apache'yi yeniden başlattığımda bu uyarıyı almaya devam ediyorum.

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

Bu, dosyamın içeriği etc/hosts:

#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

Bu, dosyamın içeriği /etc/apache2/sites-enabled/000-default:

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

Gittiğimde http://testproject.localhostboş bir sayfa alıyorum.

Neyi yanlış yaptığımı farkedebilen var mı?

Yanıtlar:


52

Varsayılan olarak Ubuntu, Apache yapılandırmasında bir SunucuAdı belirtmez, çünkü sunucunuzun adının ne olduğunu bilmiyor. IP adresinizde hiçbir şey döndürmeyen geriye doğru bir arama yapmayı deniyor, bu nedenle IP adresini yalnızca SunucuAdı olarak kullanmak zorunda .

Bunu düzeltmek için, herhangi bir sanal ana bilgisayarın dışına bir ServerName yönergesi ekleyin - örneğin /etc/apache2/httpd.conf, veya birincil IP adresiniz için ters bir DNS yanıtı kurun - bu durumda, 127.0.1.1

Bunu görmezden gelmek de gayet iyi.


3
Bu, sezgiseldir. SunucuAdı'nı herhangi bir sanal ana bilgisayarın dışına eklersem - aynı Apache sunucusundan birden fazla sanal ana bilgisayarı nasıl sunabilirim? (bu öğleden sonra, adlandırılmış sanal sunucuların
amacıdır

7
Daha sonra VirtualHost'un yalnızca istediğiniz ana bilgisayar adlarıyla eşleşmesini sağlamak için VirtualHost bloklarının içine ServerName / ServerAlias ​​ekleyebilirsiniz. Aşağıdan aşağı için httpd.apache.org/docs/2.2/mod/core.html#servername sayfasını okuyun .
crb

Bu cevabı bir saatten fazladır araştırıyorum. İnternette bununla ilgili çok fazla saçmalık var ama bu benim sorunumu çözdü. Thx
Mike

@Mike sen ve diğerleri dahi! Dört gündür bu cevabı arıyorum . (Tamam, tam çalışma günleri değil.). +1, çünkü bu, sanal ana bilgisayarların dışına etki etmeden bir ServerName yönergesi ekleyebileceğimi açıklayan ilk yanıt. Bunu akılda tutarak, ReinoutS'un çözümü benim için çalıştı (ona da +1).
Sony Santos,

27

İşte hızlı bir düzeltme:

echo ServerName $HOSTNAME > /etc/apache2/conf.d/fqdn

Teşekkürler. / Etc / hosts dosyasını veya httpd.conf komutunu kullanan düzeltmelerin hiçbiri benim için işe yaramadı, ancak bu yaptı.
Ryan

1
Apache2'yi çalıştıran Ubuntu 13.04'te düzeltildi, teşekkür ederim!
dmanexe

16

Bu uyarının etrafındaki bir başka yol, 127.0.1.1hattına tam bir etki alanı adı koymak /etc/hosts. Hatta aslında bir dns sunucusundaki herhangi bir şeyi çözecek bir fqdn olması gerekmez.

127.0.1.1  hpdtp-ubuntu910.lan  hpdtp-ubuntu910

hile yapar, ayrıca ekstra beklemeyen programların davranışını korur .lan. Sipariş önemlidir; Daha fazla seviyeli isimler, .lanadresin diğer adresin önüne geldiği bu örnekte olduğu gibi ilk önce belirtilmelidir .


7

Bu çözüm benim gelişim ihtiyaçlarıma göre çalışıyor:

Arka fon:

Debian Linux Sid:
VirtualHost Geliştirme: 10 sunucu ismim var (siteler dahilinde 10 sanal ana bilgisayar girişi)

Her birine kendi içinde benzersiz bir yerel ana bilgisayar IP adresi atadım /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

Başka bir sanal ana bilgisayar ekleyecekseniz (geliştirme için epeyce sahibim) başka bir yerel ana bilgisayar IP adresine giriş ekleyin ve Apache 2.2'yi yeniden başlatmadan önce siteyi etkinleştirin:

127.0.0.11 *newhost*

VirtualHost dosyası olarak etkinleştirmek istediğiniz her giriş için:

/ Etc / apache2 / sites-available /

joe joomla schoo forrest mağazası yayıncı stüdyoları drupal grafik wordpress

Tüm sanal ana bilgisayarlar a2ensite / a2dissite ana bilgisayar adı aracılığıyla etkinleştirildi / devre dışı bırakıldı

Hatayı bastırmak için

Web sunucusu yeniden başlatılıyor: apache2apache2: Sunucunun tam nitelikli etki alanı adı, SunucuAdı için 127.0.0.1 kullanılarak güvenilir bir şekilde belirlenemedi ... bekliyor apache2: Sunucunun tam nitelikli etki alanı adı, SunucuAdı için 127.0.0.1 kullanılarak güvenilir bir şekilde belirlenemedi ''

düzenleme httpd.conf içinde /etc/apache2/httpd.conf[Debian boş dosyası]:

ServerName 127.0.1.1

O zaman tüm adlar için çözülene kadar Look eklemek , açıklama veya devre dışı satır aşağı.

Unutmanız durumunda: Tek VirtualHost *: 80 girişi yalnızca ports.conf dosyasında olmalıdır,

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

VirtualHost girişinizde VirtualHost *: 80 dışında bırakın

Örnek: virtualhost joe

<VirtualHost *:80>
    **ServerAlias joe**
    **...**
</VirtualHost>


5

Sunucu yapılandırma düzeyinde bir SunucuAdı girişi eksik. Apache'nin varsayılan olarak kullanması için herhangi bir ana bilgisayarın dışında bir SunucuAdı girişi olması gerekir.

Bir VirtualHost içine bir ServerName girişi koymak sorunu çözmez. SunucuAdı Yönetmeliğine bakınız .


3

Bunu düzeltmek için, /etc/apache2/httpd.conf veya /etc/apache2.conf dosyasını düzenlemeniz ve aşağıdaki satırı eklememiz gerekir:

ServerName nameofserver

1
Haklısın! Ancak bu cevap, herhangi bir yeni bilgi veya fikir vermeden crb'nin cevabının içeriğini çoğaltır. Silmeyi veya başkalarının yanıtlarından farklı olan daha fazla ayrıntı eklemeyi düşünürdüm.
Royce Williams

1

ServerNameVarsayılan sanal ana bilgisayar için eklemeniz gerektiğine inanıyorum . Orada olmadığı için varsayılan IP adresini alıyor. Ve bu bir tür uyarı. Web sunucunuz hala işlevsel olacak sanırım.


Yorumunu anlamıyorum. Dosyamda zaten SunucuAdı var: <VirtualHost 127.0.0.1:8080> SunucuAdı mysite.localhost Lütfen yorumunuzu açıklayabilir misiniz?

1
-Default- virtualhost için, sadece belirli bir sanalhost değil.
Kzqai

0
  1. httpd.conf dosyanıza aşağıdaki adımları izleyerek ServerName eklemeniz gerekir

    sudo gedit /etc/apache2/httpd.conf
    

    Varsayılan olarak httpd.confdosya boş olacaktır. Şimdi, aşağıdaki satırı dosyaya eklemeniz yeterlidir.

    ServerName localhost
    

    Dosyayı kaydedin ve çıkın gedit. Sonunda sunucuyu yeniden başlatın.

    sudo /etc/init.d/apache2 restart
    

2) Include httpd.confSonunda ekleapache2.conf


-1

Eğer bir httpd.conf dosyası kurulumdan sonra etc / apache2 dizininizde bulunmuyorsa, apache2.conf ana apache konfigürasyon dosyası referans vermeyecek, böylece oluşturulan httpd.conf dosyasına bir şey eklenmeyecektir. herhangi bir şey. Bunun yerine apache2.conf dosyasına "ServerName hostname" satırını ekleyebilirsiniz.


-1

/ Etc / hosts dosyalarında hala bu girdiler var. (Yukarıdaki bazı cevapları atladım)

127.0.0.1 yerel ana bilgisayar 127.0.0.1 testproject.localhost

Her iki IP adresi 127.0.0.1 burada aynıdır.

Geridöngü ip alt ağından testproject.localhost adresine farklı IP adresleri verin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.