apache2: Không thể xác định một cách đáng tin cậy tên miền đủ điều kiện của máy chủ, sử dụng 127.0.1.1 cho ServerName


73

Tôi tiếp tục nhận được cảnh báo này khi tôi (lại) khởi động 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 ]

Đây là nội dung của etc/hoststập tin của tôi :

#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

Đây là nội dung của /etc/apache2/sites-enabled/000-defaulttập tin của tôi :

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

Khi tôi đi đến http://testproject.localhost, tôi nhận được một trang trống.

Bất cứ ai có thể phát hiện ra những gì tôi đang làm sai?

Câu trả lời:


52

Theo mặc định, Ubuntu không chỉ định Tên máy chủ trong cấu hình Apache, vì nó không biết tên máy chủ của bạn là gì. Nó cố gắng tra cứu ngược lại địa chỉ IP của bạn, không trả về gì cả, vì vậy nó chỉ phải sử dụng địa chỉ IP làm Tên máy chủ .

Để khắc phục, hãy thêm một lệnh ServerName bên ngoài bất kỳ máy chủ ảo nào - ví dụ: /etc/apache2/httpd.confhoặc thiết lập phản hồi DNS ngược cho địa chỉ IP chính của bạn - trong trường hợp này là 127.0.1.1

Nó cũng hoàn toàn tốt để bỏ qua nó.


3
Đây là phản trực giác. Nếu tôi thêm ServerName bên ngoài bất kỳ máy chủ ảo nào - làm cách nào tôi có thể phục vụ nhiều máy chủ ảo từ cùng một máy chủ Apache? (afterall này, là điểm của các máy chủ ảo có tên) - TRỪ, bạn đang nói rằng tôi có thể có nhiều hơn 1 entry ServerName trong (nói) /etc/apache2/httpd.conf
user35402

7
Sau đó, bạn có thể thêm ServerName / ServerAlias ​​bên trong các khối Virtualhost để làm cho Virtualhost chỉ khớp với tên máy chủ bạn muốn. Đọc httpd.apache.org/docs/2.2/mod/core.html#servername để biết thông tin chi tiết.
crb

Tôi đã tìm kiếm câu trả lời này trong hơn một giờ. Rất nhiều điều tào lao trên internet liên quan đến điều này, nhưng điều này đã khắc phục vấn đề của tôi. Thx
Mike

@ Giống như bạn và những người khác là thiên tài! Tôi đã tìm kiếm câu trả lời này trong bốn ngày. (Ok, ngày làm việc không đầy đủ.). +1 vì đây là câu trả lời đầu tiên giải thích rằng tôi có thể thêm một lệnh ServerName bên ngoài các máy chủ ảo mà không ảnh hưởng đến chúng. Với ý nghĩ đó, giải pháp của ReboutS cũng có hiệu quả với tôi (+1 với anh ấy).
Sony Santos

27

Đây là một sửa chữa nhanh chóng:

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

Cảm ơn. Không có bản sửa lỗi nào sử dụng / etc / hosts hay httpd.conf làm việc cho tôi, nhưng điều này đã làm.
Ryan

1
Đã sửa lỗi trên Ubuntu 13.04 chạy apache2, cảm ơn bạn!
dmanexe

16

Một cách khác xung quanh cảnh báo đó là đặt một tên miền đủ điều kiện trên 127.0.1.1dòng /etc/hosts. Nó thậm chí không phải là một fqdn thực sự sẽ giải quyết mọi thứ trên máy chủ dns.

127.0.1.1  hpdtp-ubuntu910.lan  hpdtp-ubuntu910

sẽ thực hiện mánh khóe, đồng thời bảo toàn hành vi của bất kỳ chương trình nào không mong đợi thêm .lan. Thứ tự là quan trọng; các tên có nhiều cấp độ hơn nên được chỉ định trước, như trong ví dụ này, nơi .lanđịa chỉ xuất hiện trước địa chỉ khác.


7

Giải pháp này hoạt động cho nhu cầu phát triển của tôi:

Lý lịch:

Debian Linux Sid:
Virtualhost Development: Tôi có 10 tên máy chủ (10 mục Virtualhost bên trong các trang web có sẵn)

Tôi đã gán cho mỗi người một địa chỉ IP localhost duy nhất bên trong /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

Nếu bạn định thêm một Virtualhost khác (tôi có khá nhiều thứ để phát triển), hãy thêm một mục vào một địa chỉ IP localhost khác và kích hoạt trang web trước khi khởi động lại Apache 2.2:

127.0.0.11 *newhost*

Đối với mọi mục bạn muốn kích hoạt dưới dạng tệp Virtualhost:

/ etc / apache2 / site-Available /

joe j Joomla schoo forrest cửa hàng nhà xuất bản studios đồ họa drupal wordpress

Tất cả các máy chủ ảo được bật / tắt thông qua tên máy chủ a2ensite / a2dissite

Để khắc phục lỗi

Khởi động lại máy chủ web: apache2apache2: Không thể xác định một cách đáng tin cậy tên miền đủ điều kiện của máy chủ, sử dụng 127.0.0.1 cho ServerName ... chờ apache2: Không thể xác định một cách đáng tin cậy tên miền đủ điều kiện của máy chủ, sử dụng 127.0.0.1 cho ServerName ''

chỉnh sửa httpd.conf trong /etc/apache2/httpd.conf[tệp trống trong Debian]:

ServerName 127.0.1.1

Tra cứu sau đó được giải quyết cho tất cả các tên bạn thêm , nhận xét hoặc vô hiệu hóa dòng.

Trong trường hợp bạn quên: Mục Virtualhost *: 80 duy nhất chỉ cần nằm trong tệp port.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>

Trong mục Virtualhost của bạn, hãy bỏ Virtualhost *: 80

Ví dụ: joe virtualhost

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

6

Cài đặt ServerNametrong httpd.conf không hoạt động đối với tôi. Tôi cố định nó bằng cách thiết lập ServerName 127.0.0.1trong /etc/apache2/conf.d/name.

Tôi đang chạy Ubuntu 12.10 Alpha3 và đã ServerNamexác định ở cả hai điểm.

Nguồn: http://linuxconfig.net/manual-howto/error-solution-could-not-reliably-determine-the-servers-fully-qualified-domain-name.html


Thật tuyệt, điều này cũng làm việc với tôi, có cùng một vấn đề.
Priyank Bolia

5

Bạn đang thiếu mục nhập Tên máy chủ cấp cấu hình máy chủ. Bạn cần phải có một mục nhập Tên máy chủ bên ngoài bất kỳ máy chủ lưu trữ nào, để Apache sử dụng làm mặc định.

Đặt mục ServerName bên trong Virtualhost sẽ không khắc phục được sự cố. Xem Chỉ thị Tên máy chủ .


3

Để khắc phục, chúng tôi cần chỉnh sửa /etc/apache2/httpd.conf hoặc /etc/apache2.conf và thêm dòng sau:

ServerName nameofserver

1
Bạn đúng! Nhưng câu trả lời này trùng lặp nội dung câu trả lời của crb mà không cung cấp bất kỳ thông tin mới hoặc thông tin chi tiết nào. Tôi sẽ xem xét xóa nó hoặc thêm chi tiết khác với câu trả lời của người khác.
Royce Williams

1

Tôi tin rằng bạn cần thêm ServerNamecho máy chủ ảo mặc định. Vì nó không có ở đó, nên nó lấy địa chỉ IP mặc định. Và đó là một loại cảnh báo. Tôi đoán máy chủ web của bạn sẽ vẫn hoạt động.


Tôi không hiểu bình luận của bạn. Tôi đã có ServerName trong tệp của mình: <Virtualhost 127.0.0.1:8080> ServerName mysite.localhost Bạn có thể vui lòng làm rõ nhận xét của mình không?

1
Đối với -default- virtualhost, không chỉ là một Virtualhost cụ thể.
Kzqai

0
  1. bạn phải thêm ServerName trong tệp httpd.conf của mình bằng các bước sau

    sudo gedit /etc/apache2/httpd.conf
    

    Theo mặc định, httpd.conftập tin sẽ trống. Bây giờ, chỉ cần thêm dòng sau vào tập tin.

    ServerName localhost
    

    Lưu tệp và thoát khỏi gedit. Cuối cùng khởi động lại máy chủ.

    sudo /etc/init.d/apache2 restart
    

2) Thêm Include httpd.confvào cuốiapache2.conf


-1

Nếu tệp httpd.conf chưa tồn tại trong thư mục etc / apache2 của bạn sau khi cài đặt, thì tệp cấu hình apache chính, apache2.conf, sẽ không có tham chiếu đến nó nên việc thêm bất cứ thứ gì vào httpd.conf đã tạo sẽ không làm được bất cứ điều gì Thay vào đó, bạn có thể chỉ cần thêm dòng "Tên máy chủ tên máy chủ" vào tệp apache2.conf.


-1

Là / etc / hosts vẫn có những mục này. (Tôi đã bỏ qua một số câu trả lời ở trên)

127.0.0.1 localhost 127.0.0.1 testproject.localhost

Cả hai địa chỉ IP 127.0.0.1 đều giống nhau ở đây.

Cung cấp địa chỉ IP khác nhau cho testproject.localhost từ mạng con ip loopback.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.