รีสตาร์ท Apache บน Ubuntu, RedHat, Gentoo และ Linux Distros อื่น ๆ
ถ้าคุณเป็นเจ้าของเว็บไซต์ของคุณบนแพลตฟอร์มโอเพ่นซอร์สมีโอกาสมากที่แพลตฟอร์มนี้จะเป็น Apache หากเป็นเช่นนี้และคุณกำลังใช้งานเซิร์ฟเวอร์ Apache อยู่เมื่อคุณกำลังแก้ไขไฟล์ httpd.conf ของ Apache หรือไฟล์การกำหนดค่าอื่น (เช่นการเพิ่มโฮสต์เสมือนใหม่) คุณจะต้องเริ่มต้น Apache ใหม่เพื่อให้ การเปลี่ยนแปลงของคุณจะมีผล นี้อาจดูน่ากลัว แต่โชคดีที่นี้เป็นเรื่องง่ายมากที่จะทำ
ในความเป็นจริงคุณสามารถทำได้ภายในหนึ่งนาที (ไม่นับเวลาที่ใช้ในการอ่านบทความนี้เพื่อรับคำแนะนำทีละขั้นตอน)
เริ่มต้นใช้งาน
ในการรีสตาร์ทเว็บเซิร์ฟเวอร์ของ Linux Apache วิธีที่ดีที่สุดคือการใช้คำสั่ง init.d คำสั่งนี้สามารถใช้งานได้กับการแจกจ่าย Linux จำนวนมากเช่น Red Hat, Ubuntu และ Gentoo นี่คือวิธีที่คุณจะทำเช่นนี้:
- ล็อกอินเข้าสู่เว็บเซิร์ฟเวอร์ของคุณโดยใช้ SSH หรือ telnet และตรวจดูให้แน่ใจว่าระบบของคุณมีคำสั่ง init.d มักจะพบในไดเร็กทอรี / etc ดังนั้นรายการไดเร็กทอรีนั้น:
ls / etc / i *
- ถ้าเซิร์ฟเวอร์ของคุณใช้ init.d คุณจะได้รับรายชื่อของไฟล์การเตรียมใช้งานในโฟลเดอร์ที่ระบุ มองหา apache หรือ apache2 ในโฟลเดอร์ถัดไป ถ้าคุณมี init.d แต่ไม่มีไฟล์เริ่มต้นของ Apache ให้ไปที่ส่วนของบทความนี้พร้อมกับหัวเรื่องที่เขียนว่า "การเริ่มต้นเซิร์ฟเวอร์โดยไม่ใช้ Init.d" มิฉะนั้นคุณอาจดำเนินการต่อ
- ถ้าคุณมี init.d และไฟล์เริ่มต้นของ Apache คุณสามารถเริ่มต้น Apache โดยใช้คำสั่งนี้:
/etc/init.d/apache2 โหลดซ้ำ
คุณอาจต้อง sudo เป็นผู้ใช้ root เพื่อเรียกใช้คำสั่งนี้
ตัวเลือกการโหลดซ้ำ
การใช้ตัวเลือกการโหลดใหม่เป็นวิธีที่ดีที่สุดในการรีสตาร์ทเซิร์ฟเวอร์ Apache ของคุณเนื่องจากช่วยให้เซิร์ฟเวอร์ทำงาน (กระบวนการนี้ไม่ได้ถูกฆ่าและเริ่มใหม่) แต่จะโหลดไฟล์ httpd.conf ใหม่ซึ่งโดยปกติแล้วสิ่งที่คุณต้องทำในกรณีนี้อยู่แล้ว
หากตัวเลือกการโหลดซ้ำไม่เหมาะสำหรับคุณคุณสามารถลองใช้คำสั่งต่อไปนี้แทน:
- /etc/init.d/apache2 restart - คำสั่งนี้จะฆ่ากระบวนการเซิร์ฟเวอร์และรีสตาร์ทเครื่อง
- /etc/init.d/apache2 stop - คำสั่งนี้จะฆ่ากระบวนการเซิร์ฟเวอร์
- /etc/init.d/apache2 start - คำสั่งนี้เริ่มต้นเซิร์ฟเวอร์ (และจะโยนข้อความแสดงข้อผิดพลาดถ้าเซิร์ฟเวอร์กำลังทำงานอยู่)
การรีสตาร์ทเซิร์ฟเวอร์โดยไม่ใช้ Init.d
ตกลงดังนั้นนี่คือที่ที่เราขอให้คุณข้ามไปหากเซิร์ฟเวอร์ของคุณไม่มี init.d ถ้านี่เป็นคุณอย่าหมดหวังคุณยังสามารถรีสตาร์ทเซิร์ฟเวอร์ของคุณได้ คุณเพียงแค่ต้องทำด้วยตนเองด้วยคำสั่ง apachectl ต่อไปนี้เป็นขั้นตอนสำหรับภาพจำลองนี้:
- เข้าสู่เว็บเซิร์ฟเวอร์โดยใช้ SSH หรือ telnet
- เรียกใช้โปรแกรมควบคุม apache:
apachectl สง่างาม
คุณอาจต้อง sudo เป็นผู้ใช้ root เพื่อเรียกใช้คำสั่งนี้
คำสั่ง apachectl graceful บอกให้ Apache ว่าคุณต้องการรีสตาร์ทเซิร์ฟเวอร์อย่างสวยงามโดยไม่ต้องยกเลิกการเชื่อมต่อที่เปิดอยู่ โดยอัตโนมัติจะตรวจสอบแฟ้มการกำหนดค่าก่อนที่จะเริ่มต้นการรีสตาร์ทเพื่อให้แน่ใจว่า Apache ไม่ตาย
หาก apachectl graceful ไม่รีสตาร์ทเครื่องเซิร์ฟเวอร์ของคุณมีอีกหลายอย่างที่คุณสามารถลองได้
- apachectl รีสตาร์ทเพื่อรีสตาร์ทเซิร์ฟเวอร์ ถ้าเซิร์ฟเวอร์ไม่ได้รันจะเริ่มทำงาน คำสั่งนี้ยังเรียกใช้การทดสอบการกำหนดค่าเพื่อให้แน่ใจว่า Apache จะไม่ตายเมื่อมีการรีสตาร์ท
- apachectl หยุดเพื่อหยุดเซิร์ฟเวอร์ Apache
- apachectl เริ่มต้นเพื่อเริ่มต้นเซิร์ฟเวอร์ Apache (จะโยนข้อความแสดงข้อผิดพลาดถ้า Apache กำลังทำงานอยู่)
- apachectl configtest เพื่อทดสอบไวยากรณ์ของไฟล์คอนฟิกูเรชัน
เคล็ดลับสำหรับการรีสตาร์ทเซิร์ฟเวอร์ Apache ของคุณ:
- init.d โหลดและ apachectl สง่างามทั้งโหลดไฟล์การกำหนดค่าและรีสตาร์ทเว็บเซิร์ฟเวอร์อย่างสง่างาม การเชื่อมต่อปัจจุบันใด ๆ ได้รับอนุญาตให้ทำ นี่คือแนวทางที่ต้องการและควรเป็นสิ่งที่คุณลองก่อน
- init.d restart และ apachectl restart โหลดไฟล์การตั้งค่าใหม่และรีสตาร์ทใหม่ การเชื่อมต่อปัจจุบันใด ๆ จะถูกยกเลิกทันที
- หากเซิร์ฟเวอร์ไม่ทำงานคำสั่งเหล่านี้จะเริ่มทำงานขึ้น
- ถ้าไม่มีคำสั่งเหล่านี้ทำงานได้คุณควรปิดเซิร์ฟเวอร์ Apache (ใช้เวลาสั้น ๆ ) โดยใช้คำสั่งหยุด init.d หรือ apachectl stop รออย่างน้อย 10 วินาทีจากนั้นเรียกใช้ init.d เริ่มต้นเริ่ม apachectl
- หากไม่ได้ผลคุณควรตรวจสอบไฟล์การกำหนดค่าของคุณเพื่อให้มั่นใจว่าไม่มีปัญหาเกิดขึ้นโดยใช้ apachectl graceful