เคล็ดลับการแก้ไขปัญหา Apache
- หมวดหมู่: พัฒนาการ
คุณติดตั้งเซิร์ฟเวอร์ LAMP กี่ครั้งแล้วเท่านั้นที่จะพบว่า Apache ดูเหมือนจะไม่ต้องการทำงานใช่ไหม หรือคุณติดตั้งโมดูลใหม่เท่านั้นเพื่อดู Apache พยายามดาวน์โหลดเพจเป็นไฟล์แทนที่จะแสดงบนหน้าจอ?
มีหลายร้อยหนึ่งพันสิ่งที่อาจผิดพลาดกับการติดตั้งเว็บเซิร์ฟเวอร์ใด ๆ ตั้งแต่การติดตั้งใหม่ไปจนถึงการติดตั้งที่ใช้งานมาเป็นเวลานานคุณจะไม่มีทางรู้เลยว่าเมื่อใดที่มีบางอย่างทำให้เว็บเซิร์ฟเวอร์ของคุณหลงผิด เมื่อมันเกิดขึ้นคุณควรทราบว่าโดยปกติแล้ว Occam's Razor จะใช้
ในบทช่วยสอนนี้คุณจะพบคำแนะนำที่จะช่วยคุณในการแก้ไขปัญหาทั่วไปที่อาจเกิดขึ้นกับเว็บเซิร์ฟเวอร์ Apache
เซิร์ฟเวอร์ของคุณทำงานจริงหรือไม่
เชื่อหรือไม่ว่าสิ่งนี้เกิดขึ้นกับผู้ดูแลระบบมากมาย คุณทำให้เซิร์ฟเวอร์หยุดทำงานทำการบำรุงรักษาและเมื่อคุณไปตรวจสอบเซิร์ฟเวอร์คุณจะได้รับข้อผิดพลาด สิ่งแรกที่คุณทำโดยธรรมชาติคือตรวจสอบสิ่งนั้น /etc/apache2/apache.conf ไฟล์เพื่อให้แน่ใจว่าไวยากรณ์ของคุณถูกต้อง แต่มันสมบูรณ์แบบ! ว่าไง? สิ่งแรกที่คุณอาจต้องการตรวจสอบคือตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์กำลังทำงานอยู่ แต่คุณไม่ต้องการเพียงแค่ออกคำสั่งเพื่อเริ่มเซิร์ฟเวอร์หรือโหลดเซิร์ฟเวอร์ซ้ำ ให้ออกคำสั่งแทน:
sudo /etc/init.d/apache2 สถานะ
ซึ่งควรส่งคืนสิ่งที่ต้องการ:
* apache กำลังทำงาน (pid 9751)
ถ้าไม่เริ่มเซิร์ฟเวอร์ด้วย:
sudo /etc/init.d/apache2 เริ่มต้น
หรือ
sudo apache2ctl เริ่มต้น
หมายเหตุ: หากคุณใช้การแจกจ่ายเช่น Fedora, SuSE หรือ Mandriva คุณจะต้องทำก่อน ของมัน ให้กับผู้ใช้รูทและออกคำสั่งข้างต้นโดยไม่ต้องใช้ sudo .
มันไม่ทำงานและมันจะไม่เริ่ม
คุณเพิ่งเปลี่ยนแปลงไฟล์คอนฟิกูเรชัน Apache ของคุณหรือไม่? การเปลี่ยนแปลงถูกต้องหรือไม่? หากคุณไม่แน่ใจคุณสามารถใช้ไฟล์ apache2ctl คำสั่งเพื่อตรวจสอบไวยากรณ์ของไฟล์กำหนดค่าของคุณ สิ่งนี้ทำได้ด้วยคำสั่ง:
sudo apache2ctl configtext
คำสั่งดังกล่าวควรรายงาน:
ไวยากรณ์ตกลง
หากคุณไม่ตกลงคุณจะได้รับข้อมูลที่ชี้ไปที่ข้อผิดพลาดในไฟล์กำหนดค่าของคุณ
Apache ต้องการดาวน์โหลดไฟล์. php!
นี่เป็นอีกหนึ่งปัญหาที่พบบ่อย เมื่อคุณเพิ่มเครื่องมือใหม่บนเว็บเซิร์ฟเวอร์ของคุณ (เช่น Drupal) หากไฟล์การกำหนดค่าของคุณได้รับการตั้งค่าอย่างเหมาะสมไฟล์. php ใด ๆ อาจไม่ปรากฏ แต่การพยายามดูไฟล์. php จะทำให้เบราว์เซอร์ของคุณพยายามดาวน์โหลดไฟล์แทน ทำไมถึงเป็นแบบนี้? ต้องแจ้งให้ Apache ทราบว่าจะต้องแสดงส่วนขยายบางอย่างไม่ได้ดาวน์โหลด ทำได้จากภายในไฟล์คอนฟิกูเรชัน Apache เปิดไฟล์นั้น (ในเซิร์ฟเวอร์ Ubuntu จะเป็น /etc/apache2/apache2.conf) และค้นหาบรรทัดต่อไปนี้ก่อน:
DirectoryIndex index.html
หากไฟล์นั้นไม่มีไฟล์ index.php ไซต์เกือบทั้งหมดที่ใช้ php จะถูกแสดงผลโดยไร้ประโยชน์
บรรทัดที่สองที่ต้องค้นหาคือ:
แอปพลิเคชัน AddHandler / x-httpd-php .php
หากคุณพบบรรทัดนี้และมีการแสดงความคิดเห็นโปรดตรวจสอบให้แน่ใจว่าคุณไม่ใส่ความคิดเห็นโดยลบอักขระ '#' หากไม่มีให้เพิ่มที่ด้านล่างของไฟล์กำหนดค่า
และเช่นเคยเมื่อคุณเปลี่ยนแปลงไฟล์คอนฟิกูเรชันให้รีสตาร์ท Apache
รู้ว่าจะหาปัญหาได้ที่ไหน
สุดท้ายเป็นเรื่องสำคัญที่คุณจะต้องรู้ว่าควรหันไปทางไหนก่อนเมื่อสิ่งที่กล่าวมาไม่ได้ช่วยคุณ ทุกครั้งที่ฉันมีปัญหากับ Apache ที่ใช้ไม่ได้ของ Occam's Razor อันดับแรกที่ฉันเปิดคือไฟล์บันทึก
หากคุณมองเข้าไป / Var / log / apache2 คุณจะพบไฟล์ต่อไปนี้:
- access.log: ติดตามการเชื่อมต่อใด ๆ ที่เกิดขึ้นกับเซิร์ฟเวอร์ของคุณ
- error.log: ติดตามข้อผิดพลาดที่เกิดขึ้นกับ Apache
- other_vhosts_access.log: นี่คือที่ที่โฮสต์เสมือนจะบันทึกเมื่อโฮสต์เสมือนไม่ได้กำหนดล็อกไฟล์ของตัวเอง
แน่นอนว่าเมื่อไซต์ของคุณพัฒนาขึ้นไฟล์บันทึกของคุณก็จะมี ไม่ว่าคุณจะเจออะไรก็ตาม / Var / log / apache2 นั่นคือจุดที่คุณควรหันหลังก่อนเสมอเมื่อมีปัญหา ก่อนหน้าคุณ Google
ความคิดสุดท้าย
ตอนนี้คุณน่าจะจัดการปัญหาทั่วไปบางอย่างกับเซิร์ฟเวอร์ Apache ได้แล้ว และถ้าปัญหาของคุณไม่ใช่เรื่องธรรมดาคุณก็รู้ด้วยว่าจะหาเบาะแสที่จะนำคุณไปสู่หนทางที่ถูกต้องในการแก้ไข