เมื่อติดตั้งบริการ apache2 บน Red Hat Enterprise Linux, Arch, Scientific Linux, Debian Server, Ubuntu Server หรือการกระจายอื่นๆ ที่รองรับ คุณอาจพบว่าคุณได้รับข้อผิดพลาดเกี่ยวกับโมดูล mod_authz_host ที่ป้องกันการทำงานของบริการ คุณอาจพบว่าข้อผิดพลาดนี้เป็นปัญหาทุกครั้งที่คุณเริ่มบริการ apache2 ใหม่ ข้อผิดพลาดนี้มักจะมาในรูปแบบของคำเตือนไวยากรณ์เกี่ยวกับบรรทัดแรกของไฟล์ แต่ในทางทฤษฎีแล้วคุณอาจได้รับข้อผิดพลาดที่แตกต่างออกไป
ไม่ว่าบรรทัดใดที่คุณอาจมีปัญหา การแก้ไขไม่ได้เกี่ยวข้องกับ mod_authz_host ที่ไม่ได้ติดตั้งหรือโหลดใน RAM เพียงเล็กน้อย ที่จริงแล้ว หากคุณได้รับข้อผิดพลาดนี้ แสดงว่าบริการเซิร์ฟเวอร์ apache2 กำลังโหลดโมดูลอย่างถูกต้อง ปัญหาเกี่ยวข้องกับความจริงที่ว่าคำสั่งไม่อยู่ที่ใดที่หนึ่ง และการจัดเรียงโค้ดใหม่น่าจะแก้ไขปัญหาของคุณได้ค่อนข้างเร็ว โปรดทราบว่าบางครั้งคุณจะเห็นคำแนะนำในการติดตั้ง mod_authz_host ใน apache2 ซึ่งไม่เกี่ยวข้องกับการสนทนานี้ ข้อผิดพลาดของคุณไม่ได้มาจากการขาดแพ็คเกจเฉพาะหรือมาจากการพึ่งพาที่ไม่บรรลุผลใดๆ วิธีที่นักพัฒนาเลือกที่จะระบุข้อผิดพลาดเหล่านี้นำไปสู่ความเข้าใจผิดที่พบบ่อยเหล่านี้
การแก้ไขคำสั่งโมดูลstrict.conf
เพื่อประโยชน์ในการสนทนา เราจะใช้สารานุกรมการเผยแพร่ Linux ที่ distrowatch.com สำหรับตัวอย่างของเรา เอกสาร apache2 อย่างเป็นทางการใช้ dev.example.com เป็นตัวอย่าง และไม่ว่าในกรณีใด คุณจะไม่ต้องการใช้ที่อยู่เหล่านี้อย่างใดอย่างหนึ่ง
เปิดไฟล์ด้วยโปรแกรมแก้ไขข้อความ เนื่องจากสิ่งนี้อยู่ในไดเร็กทอรีที่มีการป้องกัน คุณจะต้องมีสิทธิ์การเข้าถึงรูท เราใช้ แต่คุณสามารถใช้ vi หรือโปรแกรมแก้ไขข้อความอื่นที่คุณต้องการได้ คุณไม่จำเป็นต้องใช้เครื่องมือแก้ไขคอนโซลด้วยซ้ำ แต่อย่าลืมใช้ gksu แทน sudo หากเหมาะสม
ป>
เมื่อคุณโหลดไฟล์แล้ว ให้ใส่ใจกับสิ่งที่อ่านได้อย่างละเอียด เช่น:
คำสั่งปฏิเสธ อนุญาต ป>
ปฏิเสธจากทั้งหมด ป>
อนุญาตจาก distrowatch.com ป>
ข้อความนี้ควรมีอยู่ภายใน
<ตำแหน่ง /> ป>
คำสั่งซื้อปฏิเสธ อนุญาต ป>
ปฏิเสธจากทั้งหมด ป>
อนุญาตจาก distrowatch.com ป>
ตำแหน่ง> ป>
โปรดจำไว้ว่าคุณจะต้องแทนที่ distrowatch.com ด้วย URL จริงที่คุณใช้งานอยู่ หากคุณพบบรรทัดใดๆ ที่อ้างอิงถึง dev.example.com โดยตรง แสดงว่าคุณคัดลอกบรรทัดเหล่านั้นโดยตรงจากโค้ดตัวอย่างหรือเพิ่มไว้ตามค่าเริ่มต้น โดเมน example.com มีไว้เพื่อการอธิบายในเอกสารทางเทคนิคเท่านั้น และไม่มีจุดประสงค์ที่แท้จริง เอกสารอย่างเป็นทางการที่httpd.apache.org/docs/2.2/howto/access.html อ้างอิงถึงเอกสารเหล่านั้นจริงๆ คุณอาจสามารถลบสิ่งเหล่านี้ออกได้อย่างปลอดภัยเมื่อคุณเพิ่มข้อความใหม่เข้าไป
หากคุณต้องการรวมไดเร็กทอรีไว้ในไฟล์strict.conf ของคุณ คุณสามารถแทนที่แท็ก
นี่คือความหมายของเซิร์ฟเวอร์ apache เมื่อส่งคืนข้อผิดพลาดดังนี้:
ป>
ข้อผิดพลาดที่เกิดขึ้นจริงจะมีหมายเลขบรรทัดแทนที่ octothorpe แต่เป็นการบ่งชี้ว่าคำสั่งไม่ได้ปิดล้อมไว้อย่างปลอดภัยภายในแท็กดังกล่าว คุณอาจต้องการนำทางโดยตรงไปยังบรรทัดที่ระบุในข้อผิดพลาดเมื่อทำการดีบักสคริปต์เพื่อตรวจสอบสิ่งผิดปกติ แม้ว่าข้อผิดพลาดที่เป็นปัญหาจะบอกคุณว่าบันทึกข้อผิดพลาดของ Apache อาจมีข้อมูลเพิ่มเติม แต่อาจเป็นเพียงการเสริมแนวคิดเดียวกันกับที่กล่าวถึงในที่นี้เท่านั้น
ข้อผิดพลาดทางไวยากรณ์ในอนาคตสามารถแก้ไขได้ในลักษณะเดียวกัน คุณอาจพบว่าหลังจากแก้ไขปัญหาดังกล่าวแล้ว บริการ apache2 จะแสดงข้อผิดพลาดอื่นออกมา นี่เป็นเรื่องปกติ แม้จะฟังดูแปลกเพราะว่ามันรันโค้ดจนถึงบรรทัดแรกที่พบปัญหาเท่านั้น ถ้ามีปัญหาตามมาอีกก็คงไม่มาถึง หากคุณประสบปัญหาดังกล่าว โปรดใส่ใจกับหมายเลขบรรทัดเมื่อแก้ไขไฟล์ หากคุณใช้ nano เพื่อแก้ไขไฟล์ คุณสามารถกดปุ่ม Ctrl ค้างไว้แล้วกดปุ่ม C เพื่อค้นหาบรรทัดที่เคอร์เซอร์ของคุณเปิดอยู่ ซึ่งจะทำให้กระบวนการแก้ไขข้อบกพร่องดำเนินไปได้อย่างราบรื่นยิ่งขึ้น
คุณอาจพบว่ามีหลายบล็อกลอยไปมาในลักษณะที่ไม่ยึดติดกับสิ่งใดๆ แต่ละรายการต้องมีแท็กอยู่ ลบการบล็อกเพิ่มเติมทุกครั้งที่คุณพบว่าคุณมีสำเนา URL เดียวกันหลายชุดซึ่งมีคำสั่งเหมือนกันทุกประการ เนื่องจากรายการที่ซ้ำกันเหล่านี้อาจทำให้เกิดปัญหาได้ โดยทั่วไปคุณจะต้องมีสำเนา URL ใดๆ เพียงสำเนาเดียว เนื่องจากคุณไม่ควรส่งคำสั่งเพิ่มเติมเกี่ยวกับคำสั่งหนึ่งไปยังเซิร์ฟเวอร์ apache2 เนื่องจากคำสั่งเหล่านั้นอาจขัดแย้งกันในท้ายที่สุด
เกี่ยวกับผู้เขียน
เควิน แอร์โรว์ส
Kevin Arrows เป็นผู้เชี่ยวชาญด้านเทคโนโลยีที่มีประสบการณ์สูงและมีความรู้และมีประสบการณ์ในอุตสาหกรรมมานานกว่าทศวรรษ เขาได้รับการรับรองจาก Microsoft Certified Technology Specialist (MCTS) และมีความมุ่งมั่นอย่างแรงกล้าที่จะติดตามข่าวสารเกี่ยวกับการพัฒนาเทคโนโลยีล่าสุด Kevin ได้เขียนหัวข้อที่เกี่ยวข้องกับเทคโนโลยีอย่างกว้างขวาง โดยนำเสนอความเชี่ยวชาญและความรู้ของเขาในด้านต่างๆ เช่น การพัฒนาซอฟต์แวร์ ความปลอดภัยทางไซเบอร์ และการประมวลผลแบบคลาวด์ การมีส่วนร่วมของเขาในด้านเทคโนโลยีได้รับการยอมรับและเคารพอย่างกว้างขวางจากเพื่อนร่วมงานของเขา และเขาได้รับการยกย่องอย่างสูงจากความสามารถของเขาในการอธิบายแนวคิดทางเทคนิคที่ซับซ้อนในลักษณะที่ชัดเจนและรัดกุม ป>