Lỗi Apache 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ủ


432

Khi tôi khởi động lại máy chủ Apache của mình bằng lệnh

sudo /etc/init.d/apache2 restart

Tôi nhận được lỗi sau đây:

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

Là máy chủ sử dụng 127.0.1.1 thay vì 127.0.0.1? Điều gì gây ra lỗi này?

Câu trả lời:


509

6 # 13.04 trở lên

Đây chỉ là một cảnh báo thân thiện và không thực sự là một vấn đề (vì trong đó một cái gì đó không hoạt động).

Nếu bạn đi đến:

/etc/apache2/apache2.conf

và chèn:

ServerName localhost   

và sau đó khởi động lại apache bằng cách gõ vào terminal:

sudo systemctl reload apache2

thông báo sẽ biến mất.

Nếu bạn có một tên bên trong, /etc/hostnamebạn cũng có thể sử dụng tên đó thay vì localhost.


Và nó sử dụng 127.0.1.1nếu nó nằm trong /etc/hosts:

127.0.0.1 localhost
127.0.1.1 myhostname

Phương pháp ưa thích

Xử lý sự cố Apache

Nếu bạn gặp lỗi này:

apache2: Could not determine the server's fully qualified domain name, 
using 127.0.0.1 for ServerName

sau đó sử dụng trình soạn thảo văn bản như "sudo nano" tại dòng lệnh hoặc "gksudo gedit" trên màn hình nền để tạo một tệp mới,

sudo nano /etc/apache2/conf.d/fqdn

hoặc là

gksu "gedit /etc/apache2/conf.d/fqdn"

sau đó thêm

ServerName localhost

vào tập tin và lưu lại. Tất cả điều này có thể được thực hiện trong một lệnh duy nhất với các điều sau đây:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn

Nhưng trên Ubuntu 14.04:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf
 sudo a2enconf fqdn

Đừng quên ".conf" (không có sẽ không hoạt động).


2
Điều này cũng được đề cập trong tài liệu thiết lập Ubuntu LAMP để khắc phục sự cố Apache . Ở đó, họ khuyên bạn nên tạo một tập tin /etc/apache2/conf.d/fqdn ServerName localhosttrong đó
icc97

Câu trả lời rất hay - nhưng tôi cũng khuyên bạn nên đặt nó trong thư mục conf.d :)
cwd

3
/etc/apache2/conf.d/không tồn tại sau khi tôi cài đặt lamp-server^vào 14.04
redanimalwar

@redanimalwar Trong 13.10 và mới hơn, hãy xem câu trả lời của @ Starx bên dưới.
Dan

3
Đối với bước cuối cùng (tạo liên kết sym trong 14.04) tôi khuyên bạn nên sudo a2enconf fqdnmặc dù về mặt kỹ thuật nó phải giống nhau.
Nuala

176

13.10 hoặc mới hơn

Kể từ Apache 2.4 - có sẵn theo mặc định kể từ ngày 13.10 - bạn không thể sử dụng phương pháp thêm tệp cấu hình trong conf.dthư mục.

Apache không còn sử dụng conf.dthư mục. Tất cả các tệp cấu hình được lưu trữ trong /etc/apache2/conf-availablethư mục và tất cả các tệp cấu hình bây giờ sẽ có .confphần mở rộng.

Để giải quyết thông báo này trong Apache 2.4, chúng ta phải tạo một tệp cấu hình bên trong thư mục conf-Available. Ví dụ servername.conf.

sudo vi /etc/apache2/conf-available/servername.conf

Và bên trong này, chúng ta chỉ cần thêm một dòng

ServerName localhost

Bạn có thể kết hợp hai lệnh trước đó trong một với:

echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf

Nếu bạn muốn sử dụng một tên miền hoặc bất kỳ tên nào khác tùy thuộc vào yêu cầu của nó, chỉ cần thay thế localhostbằng bất cứ thứ gì bạn cần. Tiếp theo bạn phải kích hoạt cấu hình này. Đối với điều này, bạn cần chạy lệnh sau:

sudo a2enconf servername

a2enconflà một lệnh để kích hoạt một tệp cấu hình trong Apaches 2.4. Cũng lưu ý rằng servernametrên lệnh trên là từ tên của tệp cấu hình servername.conf. Nếu tập tin cấu hình của bạn là ngenericserver.confsau đó bạn sẽ phải viết sudo a2enconf ngenericserver.

Sau này tải lại máy chủ và thông báo trên sẽ không còn lỗi bạn nữa.

sudo service apache2 reload

hoặc là

sudo apache2ctl graceful

Bây giờ sau này bạn sẽ thấy rằng thông báo sẽ không được hiển thị lại và vấn đề sẽ được khắc phục.


3
Có ai biết làm thế nào để Apache nói tập tin cấu hình nào mà nó gặp vấn đề không? Tôi không biết tại sao các nhà phát triển không bao giờ nghĩ sẽ đưa điều này vào thông báo lỗi của họ - hầu như không mất nhiều mã!
John Y

Nếu tôi có một fqdm Internet cho máy chủ này, đây có phải là nơi để đặt nó không? tức là tôi có nên thay thế myhost.org thay cho localhost không?
CPBL

1
@CPBL Đây sẽ là tên máy chủ mặc định cho tất cả các trang web. Nếu bạn chỉ có một trang web, thì đó là tất cả những gì bạn cần làm. Nếu bạn có nhiều trang web trên máy chủ của mình, bạn cũng sẽ cần thêm chỉ thị tên máy chủ cho từng trang web trong cấu hình máy chủ ảo tương ứng của chúng.
Dan

1
Hoạt động trên 14.04 LTS.
Parto

1
Liên kết trích dẫn của bạn dường như đã chết, xin vui lòng sửa chữa.
Fredrick Gauss

28

Apache2 cũng có thể lấy FQDN từ tên máy chủ hệ thống được cấu hình đúng thay vì mã hóa cứng vào tệp cấu hình apache. Mã hóa cứng cũng sẽ gây nhầm lẫn nếu tên máy chủ thay đổi. Bạn thực sự không cần bất kỳ ServerNamechỉ thị nào trong httpd.confhoặc bất kỳ tập tin cấu hình apache nào.

Đặt những thứ sau vào /etc/hosts:

# IPv4 and IPv6 localhost aliases
127.0.0.1 hostname.domainname.com  hostname  localhost
::1       hostname.domainname.com  hostname  localhost

nơi hostname.domainname.comlà FQDN của máy tính của bạn.

Cùng với tên máy chủ được cấu hình đúng trong /etc/hostname/hoặc với hostnamectl, điều này cũng sẽ giúp các dịch vụ khác trên máy của bạn chạy đúng (tức là lời nhắc đăng nhập, hiển thị This is hostname.domainname.comthay vì This is hostname.unknown_domain.)


5
+1 cho "tên máy chủ hệ thống được cấu hình đúng". Tôi muốn cấu hình máy chủ đúng cách. Điều này cũng đã sửa lỗi của tôi trong log[warn] RSA server certificate CommonName (CN) <fqdn> does NOT match server name!?
transitor1

Bạn có nghĩ cái này nên hoạt động với Apache 2.2.22 không? Tôi vẫn nhận được "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 Tên máy chủ"
David Winiecki

Được hostname localhostcho là myubuntuservername localhost? Hoặc chuỗi theo nghĩa đen hostname localhost? Bạn không rõ ràng trong câu trả lời của mình
Jonathan

2
Đây phải là câu trả lời được chấp nhận. Dường như bạn có thể cần liên kết FQDN với địa chỉ IP tĩnh hơn là 127.0.0.1.
Skippy le Grand Gourou

1
Đây là câu trả lời tốt nhất cho tôi trên Ubuntu 18.04 Tôi muốn tài liệu phù hợp mặc dù tên miền đủ điều kiện không phải là thuật ngữ tương tự ở đây hoặc bất cứ nơi nào. nếu tên miền đủ điều kiện của tôi là google.com và tên máy chủ của tôi là google, mục nhập của tôi trong / etc / hosts sẽ là 127.0.0.1 google.com google Tôi có thể thay thế dòng localhost và máy chủ lưu trữ cục bộ quảng cáo đến cuối dòng này nếu tôi muốn. Tôi đã sử dụng cái này: digitalocean.com/community/tutorials/ từ
New Zealand

26
  • Mở một thiết bị đầu cuối
  • Mở /etc/apache2/httpd.conftệp:

    sudo editor /etc/apache2/httpd.conf # [1]
    
  • Theo mặc định, nó sẽ trống. Chỉ cần thêm dòng sau:

    ServerName localhost
    
  • Lưu file và thoát

  • Khởi động lại máy chủ

    sudo service apache2 restart
    

[1] Khởi chạy trình chỉnh sửa mặc định, xem sudo update-alternatives --config editor


sau khi thực hiện lệnh cuối cùng xảy ra lỗi sau ** Khởi động lại máy chủ web apache2 / usr / sbin / apache2ctl: 87: ulimit: giới hạn cài đặt lỗi (Không được phép hoạt động) / usr / sbin / apache2ctl: 87: ulimit: giới hạn cài đặt lỗi được phép) (13) Quyền bị từ chối: make_sock: không thể liên kết với địa chỉ 0.0.0.0:80 không có ổ cắm nghe, tắt Không thể mở nhật ký Hành động 'bắt đầu' không thành công. Nhật ký lỗi Apache có thể có thêm thông tin. [thất bại] ** @ green7
Deepu

thử 'sudo dịch vụ apache2 khởi động lại'
waterloo2005

20

Trong phiên bản mới của apache2, bạn chỉ cần thực hiện theo lệnh như thế này:

sudo nano /etc/apache2/apache2.conf

Thêm dòng cuối mới của tập tin:

ServerName localhost

Sau đó khởi động lại apache2:

sudo service apache2 restart

Xong rôi.


6

Tôi thấy sẽ tốt hơn một chút khi tạo một tệp mới /etc/conf.dđể sửa đổi apache2.confhoặc httpd.conf.

Đó là một sở thích cá nhân giúp tách biệt các thay đổi cấu hình của tôi khỏi gói phân phối. Vì vậy, cập nhật ít phức tạp hơn.

Tôi tạo tập tin /etc/apache2/conf.d/AAserverNamevà nó chỉ chứa:

ServerName myhost.mycomain.tld

Các đề xuất khác chắc chắn cũng làm việc.


2

Trong Ubuntu 16.04:

sudo -i

echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf server-name

1

Thêm vào ServerName localhost

Đến

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

Đó không phải là một lỗi .. Nó chỉ là một lời nhắc nhở bạn bè


1

Chỉ định ServerName localhosttrong các tệp cấu hình của bạn bên ngoài các phần máy chủ ảo là cách để làm điều này.

Một số câu trả lời khác cho thấy bạn nên sửa đổi /etc/apache2/httpd.conf. Tập tin này bị ghi đè khi apache được nâng cấp từ apt. Đối với cấu hình Apache mà bạn không muốn bị ghi đè, bạn nên tạo một tệp mới. Đây là "cách Debian" để thay đổi cấu hình này:

# create the configuration file in the "available" section
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf
# enable it by creating a symlink to it from the "enabled" section
sudo a2enconf servername
# restart the server
sudo service apache2 restart

Điều này về cơ bản giống như câu trả lời của Stark, nhưng trong một dạng kịch bản dễ sao chép và dán. Ban đầu tôi đã đăng bài này trong một câu hỏi được đánh dấu là trùng lặp: https://askubfox.com/a/432408


1

Trên Ubuntu 16.04 :

Thêm ServerName localhostvào tập tin httpd.confsử dụng lệnh gthe sau đây.

sudo vi  /etc/apache2/httpd.conf

Sau đó bao gồm dòng này Include httpd.confở cuối tập tin này

sudo vi /etc/apache2/apache2.conf

Kiểm tra lỗi cú pháp một lần nữa

sudo apache2ctl configtest

Bây giờ bạn sẽ nhận được

Syntax OK

Bây giờ bạn có thể khởi động lại máy chủ một cách duyên dáng bằng cách tải lại cấu hình

sudo service apache2 reload

hoặc giết quá trình và bắt đầu lại

sudo service apache2 restart

0

Trên Ubuntu 11.10, tôi thấy thông báo này, cùng với tình trạng treo boot xảy ra do đĩa của tôi đã đầy. Một trong những tệp nhật ký đã bị lừa đảo . Có lẽ thực sự không có vấn đề gì với Apache, nhưng thông báo này là manh mối cuối cùng được đưa ra trước khi khởi động.

Để khắc phục sự cố, tôi phải khởi động vào chế độ khôi phục và xóa tệp nhật ký bướng bỉnh.


0

Nếu bạn đang sử dụng bash và muốn phụ thuộc tối thiểu (và chỉ muốn một lớp lót cho tập lệnh nhập cảnh của bạn nếu bạn đang sử dụng Docker như tôi), hai tùy chọn này sẽ hoạt động.

Nếu bạn muốn localhost:

echo "ServerName localhost" >> /etc/apache2/apache2.conf

Nếu bạn muốn tên máy chủ hiện có:

echo "ServerName $(cat /etc/hostname)" >> /etc/apache2/apache2.conf

Điều này sử dụng các toán tử chuyển hướng bash để nối chuỗi vào cuối tệp. Echo tự động chèn dòng mới, vì vậy bạn đã thiết lập xong.


0

Chạy lệnh sau:

apachectl -t -D DUMP_INCLUDES

để xác định đường dẫn đến httpd.conftệp cấu hình của bạn , sau đó chỉnh sửa tệp đó và bỏ ghi chú / sửa đổi dòng chỉ định giá trị cho ServerNametùy chọn, ví dụ:

ServerName localhost

Đối với máy chủ web, sử dụng tên DNS đã đăng ký (ví dụ example.com).

Nếu máy chủ của bạn không có tên DNS đã đăng ký, hãy nhập địa chỉ IP của nó vào đây.


0

Trên Ubuntu 16.04 :

Thêm ServerName localhostvào tập tin httpd.confsử dụng lệnh gthe sau đây.

sudo vi  /etc/apache2/httpd.conf

Sau đó bao gồm dòng này Include httpd.confở cuối tập tin này

sudo vi /etc/apache2/apache2.conf

Kiểm tra lỗi cú pháp một lần nữa

sudo apache2ctl configtest

Bây giờ bạn sẽ nhận được

Syntax OK

Bây giờ bạn có thể khởi động lại máy chủ một cách duyên dáng bằng cách tải lại cấu hình sudo dịch vụ apache2 khởi động lại

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.