Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

แก้ไขข้อผิดพลาด mod_authz_host ใน Apache บน Linux: คู่มือขั้นตอน

ติดตั้ง apache2 บน RHEL, Arch, Scientific Linux, Debian Server, Ubuntu Server หรือดิสโตรที่รองรับ อาจเจอ error เกี่ยวโมดูล mod_authz_host ป้องกันการเริ่ม service error มักเป็น syntax warning บรรทัดแรกของไฟล์ แต่อาจเป็น error อื่น

ไม่ว่าจะเป็นบรรทัดไหน การแก้ไขไม่เกี่ยวกับ mod_authz_host ไม่ได้ติดตั้งหรือโหลดใน RAM หากเจอ error แปลว่า apache2 โหลดโมดูลถูกต้อง ปัญหาคือ directive วางผิดที่ จัดเรียงโค้ดใหม่จะแก้ได้เร็ว โปรดทราบ: บางครั้งเห็นคำสั่งติดตั้ง mod_authz_host ใน apache2 - ไม่เกี่ยวข้อง Error ไม่ได้มาจากขาดแพ็กเกจหรือ dependency ที่ไม่ได้ปฏิบัติ วิธีที่ developer เขียน error message นำไปสู่ความเข้าใจผิดทั่วไป

แก้ไข Module Directives ใน restrict.conf

ตัวอย่างใช้ distrowatch.com เอกสาร apache2 ใช้ dev.example.com ทั้งคู่ไม่ควรใช้จริง

เปิดไฟล์ด้วย text editor อยู่ใน protected directory ต้อง root ใช้ sudo nano /etc/apache2/mods-enabled/restrict.conf (หรือ vi, editor อื่น) ไม่บังคับ console editor แต่ถ้า GUI ใช้ gksu แทน sudo

โหลดไฟล์แล้ว สังเกตบล็อกที่อ่านได้ประมาณนี้:

Order deny,allow

Deny from all

Allow from distrowatch.com

ข้อความนี้ต้องอยู่ภายในบล็อก <Location /> </Location> เท่านั้น (สังเกต space ในแท็กแรก) หากข้อความลอยนอกบล็อก ให้เพิ่มแท็กรอบๆ หรือย้ายให้อ่านเป็น:

<Location />

Order deny,allow

Deny from all

Allow from distrowatch.com

</Location>

แทนที่ distrowatch.com ด้วย URL จริง หากเจอ dev.example.com ตรงๆ: อาจ copy จากโค้ดตัวอย่างหรือเป็น default เอกสารทางการ httpd.apache.org/docs/2.2/howto/access.html อ้างอิง ลบออกได้ตอนเพิ่มข้อความใหม่

ต้อง include directory ใน restrict.conf: แทน <Location /> </Location> ด้วย <Directory /> </Directory> รักษา space ในแท็กแรก บันทึก ปิดไฟล์ รีสตาร์ท apache2 ไม่ควรมีปัญหาต่อ

นี่คือความหมายของ error apache แบบ:

Syntax error on line # of /etc/apache2/mods-enabled/restrict.conf: Order not allowed here

error จริงจะมีเลขบรรทัดแทน # บอกว่า directives ไม่อยู่ในแท็กที่ปลอดภัย ควรไปที่บรรทัดที่ error บอก เพื่อ debug nano: Ctrl+C ดูเลขบรรทัดปัจจุบัน ช่วย debug เร็วขึ้น

อาจเจอ syntax error อีกหลายอันหลังแก้ตัวแรก - ปกติ เพราะ apache execute จนเจอ error แรก ถ้ามี error ล่างกว่า จะไม่ถึง ลองดูเลขบรรทัดตอนแก้ไฟล์ หากมีหลายบล็อกลอยๆ ต้องมีแท็กรอบทุกรอบ ลบบล็อกซ้ำ (URL และ directives เหมือนกัน) เพราะอาจ countermand กัน โดยทั่วไปต้องการแค่ 1 copy ต่อ URL