httpd: ไม่สามารถกำหนดชื่อโดเมนแบบเต็มของเซิร์ฟเวอร์ได้อย่างเชื่อถือได้โดยใช้ 127.0.0.1 สำหรับ ServerName


172

ฉันพยายามรีสตาร์ทเซิร์ฟเวอร์ Apache บน CentOS 5.0 และได้รับข้อความนี้:

httpd: ไม่สามารถกำหนดชื่อโดเมนแบบเต็มของเซิร์ฟเวอร์ได้อย่างเชื่อถือได้โดยใช้ 127.0.0.1 สำหรับ ServerName

นี่คือ/etc/hostsไฟล์:

127.0.0.1    server4-245    server4-245.com    localhost.localdomain localhost
::1        localhost6.localdomain6 localhost6

นี่คือ/etc/sysconfig/networkไฟล์:

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=server4-245

ฉันมีสิ่งนี้ในไฟล์ Apache httpd.conf ด้วย:

ServerName localhost

อย่างไรก็ตามฉันยังคงได้รับข้อความแสดงข้อผิดพลาดแรกเมื่อฉันรีสตาร์ท Apache


1
httpd.confให้แน่ใจว่าคุณแก้ไขที่เหมาะสม โดยปกติแล้วServerName xyไม่เป็นไร
KingCrunch

คำตอบ:


95

ไฟล์โฮสต์ของคุณไม่มี FQDN ที่ถูกต้องและไม่ใช่localhostFQDN FQDN ต้องมีส่วนชื่อโฮสต์รวมถึงส่วนชื่อโดเมน ตัวอย่างเช่นต่อไปนี้เป็น FQDN ที่ถูกต้อง:

host.server4-245.com

เลือก FQDN และรวมไว้ใน/etc/hostsไฟล์ของคุณทั้งที่อยู่ IPv4 และ IPv6 ที่คุณใช้ (ในกรณีของคุณlocalhostหรือ127.0.0.1) และเปลี่ยนการServerNameตั้งค่า httpd ของคุณให้ตรงกัน

/ etc / hosts:

127.0.0.1    localhost.localdomain localhost host.server4-245.com
::1          localhost.localdomain localhost host.server4-245.com

httpd.conf:

ServerName host.server4-245.com

6
โปรดทราบว่าคุณจะต้องแก้ไขรายการ HOSTNAME ในไฟล์ / etc / sysconfig / network ของคุณเพื่อให้ตรงกับชื่อที่คุณเลือก
Paul Stengel

2
อืมมม ฉันได้: 127.0.0.1 localhost gondor gondor.localdomain 192.168.0.3 gondor.localdomain แต่ดูเหมือนว่า linux ไม่คิดว่า gondor.localdomain เป็น FQDN เช่นกัน มีปัญหาอะไรกับสิ่งนั้น? ฉันต้องมี TLD หรือไม่
Adam

สวัสดีฉันลองทั้งหมดข้างต้นแล้วและฉันยังคงได้รับข้อผิดพลาดเดิมฉันไม่เข้าใจว่าฉันขาดอะไรที่นี่ FQDN ของฉันคือ ak.local.com ตั้งค่าเช่นเดียวกับคำตอบของคุณ แต่ฉันยังคงได้รับปัญหาเดียวกัน ฉันใช้งาน OSX 10.10
AKFourSeven

1
ฉันพบว่า: 127.0.0.1 myserver myserver.mydom.com ... ฯลฯ << ไม่ทำงาน 127.0.0.1 myserver.mydom.com myserver ... ฯลฯ << ไม่ทำงาน
Martin

208

หากคุณไม่มีhttpd.confในโฟลเดอร์/etc/apache2คุณควรมี apache2.conf - เพียงเพิ่ม:

ชื่อเซิร์ฟเวอร์โฮสต์

จากนั้นเริ่มapache2บริการใหม่


2
ทำงานอย่างสมบูรณ์บน Ubuntu 12.04 LTS ที่ใช้โฮสต์เสมือนหลายเครื่อง
Gor

3
ทำงานได้อย่างสมบูรณ์บน Mac OS 10.7.5 ที่ใช้โฮสต์เสมือนหลายตัว
DudeOnRock

1
ทำงานบน Mac OS 10.7.5 ที่ใช้ Virtualbox
iWizard

3
ทำงานอย่างสมบูรณ์บน Centos 6.4
Kel Solaar

7
ทำงานอย่างสมบูรณ์แบบบน Centos 6 (รุ่นคลาวด์) แม้ว่า httpd.conf จะอยู่ใน / etc / httpd / conf /
gbarry

64

หลังจากติดตั้งเซิร์ฟเวอร์ Apache ครั้งแรกฉันได้รับข้อผิดพลาดต่อไปนี้ในขณะที่เริ่มบริการ Apache บนUbuntu 12.04 (แม่นยำ Pangolin)

การแก้ปัญหานั้นง่ายมาก เพียงเพิ่มServerNameคำสั่งไปที่/etc/apache2/httpd.conf:

sudo nano /etc/apache2/httpd.conf

เพิ่ม: ServerName localhost

ในที่สุดรีสตาร์ทเซิร์ฟเวอร์ Apache:

sudo /etc/init.d/apache2 restart

1
ภายใน CentOS 7 เส้นทางจะเป็น /etc/httpd/conf/httpd.conf
Debashis

11

ดังนั้นในขณะที่คำตอบนี้ได้รับการยอมรับก็ยังปรากฏเป็นผลการค้นหาอันดับต้น ๆ และคำตอบที่วางไว้ (หลังจากการวิจัยจำนวนมาก) ทำให้ฉันเกาหัวของฉันและขุดอีกมาก ดังนั้นนี่คือเค้าโครงแบบย่อของวิธีที่ฉันแก้ไขปัญหา

สมมติว่าเซิร์ฟเวอร์ของฉันคือ myserver.myhome.com และที่อยู่ IP แบบคงที่ของฉันคือ 192.168.1.150:

  1. แก้ไขไฟล์โฮสต์

    $ sudo nano -w /etc/hosts
    
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    
    127.0.0.1 myserver.myhome.com myserver
    
    192.168.1.150 myserver.myhome.com myserver
    
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    ::1 myserver.myhome.com myserver
    
  2. แก้ไข httpd.conf

    $ sudo nano -w /etc/apache2/httpd.conf
    
    ServerName myserver.myhome.com
    
  3. แก้ไขเครือข่าย

    $ sudo nano -w /etc/sysconfig/network HOSTNAME=myserver.myhome.com
    
  4. ตรวจสอบ

    $ hostname
    
    (output) myserver.myhome.com
    
    $ hostname -f
    
    (output) myserver.myhome.com
    
  5. รีสตาร์ท Apache

    $ sudo /etc/init.d/apache2 restart
    

ปรากฏความแตกต่างรวมmyserver.myhome.comถึงทั้ง 127.0.0.1 เช่นเดียวกับที่อยู่ IP แบบคงที่ 192.168.1.150 ในไฟล์โฮสต์ เช่นเดียวกับ Ubuntu Server และ CentOS


9

ใน httpd.conf ให้ค้นหา "ServerName" มันมักจะแสดงความคิดเห็นโดยค่าเริ่มต้นบน Mac เพียงแค่ไม่ใส่เครื่องหมายข้อคิดเห็นและกรอกให้แน่ใจว่าคุณมีชื่อ / ip combo set ใน / etc / hosts


ขอบคุณสิ่งนี้มีประโยชน์ httpd ไม่ได้รับ fqdn ของฉันใน / etc / hosts และดูเหมือนว่าชื่อโฮสต์ของฉันได้รับการกำหนดค่าอย่างเหมาะสม
Banjer

8

ตรวจสอบให้แน่ใจว่าคุณกำลังแก้ไขhttpd.confไฟล์ที่ถูกต้องจากนั้นข้อผิดพลาดเกี่ยวกับชื่อโดเมนของเซิร์ฟเวอร์ที่ไม่น่าเชื่อถือควรหายไป (นี่เป็นข้อผิดพลาดทั่วไปที่สุด)

ในการค้นหาhttpd.confไฟล์คอนฟิกูเรชัน Apache ให้รัน:

apachectl -t -D DUMP_INCLUDES

จากนั้นแก้ไขไฟล์และยกเลิกหมายเหตุหรือเปลี่ยนServerNameบรรทัดเป็น:

ServerName localhost

จากนั้นรีสตาร์ท apache ของคุณโดย: sudo apachectl restart


1
"ตรวจสอบให้แน่ใจว่าคุณกำลังแก้ไขไฟล์ htttpd.conf ที่ถูกต้อง" สิ่งนี้ช่วยฉันใน macOS ฉันไม่ได้แก้ไขhttp.confไฟล์ที่ถูกต้อง ขอบคุณ
Asme เพียง


3

มีสองวิธีในการแก้ไขข้อผิดพลาดนี้:

  1. Include /etc/apache2/httpd.conf

    เพิ่มบรรทัดข้างต้นในไฟล์/etc/apache2/apache2.conf

  2. เพิ่มบรรทัดนี้ที่ท้ายไฟล์/etc/apache2/apache2.conf :

    ชื่อเซิร์ฟเวอร์โฮสต์


1

ฉันแก้ไขข้อความชื่อโดเมนที่ผ่านการรับรองโดยสมบูรณ์ในโอกาสที่แตกต่างกันโดยการเพิ่มชื่อโฮสต์เซิร์ฟเวอร์ของฉันไปยังไฟล์ /etc/apache2/httpd.conf และ/etc/apache2/apache2.confไฟล์

พิมพ์hostname -fเทอร์มินัลของคุณ แบบสอบถามนี้จะส่งคืนชื่อโฮสต์ของคุณ

แล้วแก้ไข/etc/apache2/httpd.confไฟล์ (หรือสร้างมันถ้ามันไม่ได้อยู่ด้วยเหตุผลบางอย่าง) ServerName <your_hostname>และเพิ่ม

หรือฉันได้รับยังสามารถที่จะกำจัดข้อความโดยการเพิ่มServerName <your_hostname>ไปยัง/etc/apache2/apache2.confไฟล์

หากทุกอย่างเป็นไปด้วยดีเมื่อคุณรีสตาร์ท Apache ข้อความจะหายไป


1

คำตอบส่วนใหญ่แนะนำให้เพียงแค่เพิ่มการServerName localhost/etc/apache2/apache2.conf

แต่อ้างถึงเอกสาร Apache  :

การมีข้อความแสดงข้อผิดพลาดนี้บ่งชี้ว่า Apache httpd ไม่สามารถรับชื่อโฮสต์แบบเต็มโดยทำการค้นหาแบบย้อนกลับบนที่อยู่ IP ของเซิร์ฟเวอร์ของคุณ ในขณะที่คำแนะนำข้างต้นจะกำจัดคำเตือนไม่ว่าในกรณีใด ๆ มันก็เป็นความคิดที่ดีในการแก้ไขปัญหาชื่อของคุณเพื่อให้การทำแผนที่ย้อนกลับนี้ทำงาน

ดังนั้นการเพิ่มบรรทัดดังกล่าวลงใน/etc/hostsอาจเป็นโซลูชันที่มีประสิทธิภาพมากขึ้น:

192.0.2.0  foobar.example.com  foobar

โดยที่192.0.2.0เป็นที่อยู่ IP แบบคงที่ของเซิร์ฟเวอร์ที่ตั้งชื่อfoobarไว้ภายในexample.comโดเมน

หนึ่งสามารถตรวจสอบ FQDN เช่นด้วย

hostname -A

(ทางลัดสำหรับhostname --all-fqdn)


1

ปรากฎว่าฉันมีปัญหานี้และเป็นเพราะฉันใช้ "แท็บ" เพื่อเยื้องบรรทัดแทนที่จะเว้นวรรค เพียงโพสต์ในกรณีที่ช่วยใครก็ได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.