Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีที่ดีที่สุดในการรีสตาร์ท Apache Web Server

เมื่อคุณโฮสต์เว็บไซต์บนแพลตฟอร์มโอเพนซอร์ส มากที่สุดแพลตฟอร์มจะใช้ Apache เป็นเว็บเซิร์ฟเวอร์เริ่มต้นที่รันบน Linux distribution ระดับเซิร์ฟเวอร์ เมื่อคุณทำการเปลี่ยนแปลงสำคัญโครงสร้างการตั้งค่าของเว็บเซิร์ฟเวอร์ คุณจะต้องรีสตาร์ทเว็บเซิร์ฟเวอร์ (ไม่ใช่ ระบบปฏิบัติการโดยธรรมชาติ) ขั้นตอนการรีสตาร์ท Apache ขึ้นอยู่กับระบบปฏิบัติการของเซิร์ฟเวอร์

ข้อกำหนดเบื้องต้น

เพื่อรีสตาร์ทเซิร์ฟเวอร์ คุณจะต้องมีการเข้าถึงเชลล์ (shell access) ของระบบปฏิบัติการที่ Apache รันอยู่ ด้วย dedicated VPS คุณจะล็อกอินเข้าสู่เชลล์พรอมพ์ทผ่านเบราว์เซอร์หรือใช้เซสชัน Secure Shell ที่เริ่มต้นจากคอมพิวเตอร์ท้องถิ่น หากคุณไม่สามารถล็อกอินเข้าสู่เซิร์ฟเวอร์และรันคำสั่งด้วยสิทธิ์ขยาย (เช่น การใช้ sudo) คุณจะไม่สามารถรีสตาร์ท Apache server ได้ ในกรณีนั้น คุณจะต้องติดต่อผู้ดูแลระบบเพื่อขอความช่วยเหลือ

การทำงานกับเซิร์ฟเวอร์ใน Linux

วิธีที่ดีที่สุดในการรีสตาร์ท Apache Web Server

หลาย Linux distributions รองรับชุดของเชลล์สคริปต์ที่ควบคุมบริการหลัก สคริปต์เหล่านี้ตอบสนองต่ออาร์กิวเมนต์หลายอย่างที่กำหนดการทำงานของสคริปต์:

  • Start: เริ่มบริการ
  • Stop: หยุดบริการ
  • Restart: รีสตาร์ทบริการโดยไม่คำนึงถึงการใช้งานปัจจุบัน
  • Reload: รีสตาร์ทอย่างอ่อนโยน (graceful) ให้การเชื่อมต่อปัจจุบันทำงานต่อได้หากเป็นไปได้

หากทำได้ ให้ใช้ reload แทน restart เพราะ reload ไม่ได้ฆ่าเซิร์ฟเวอร์จริงๆ มันเพียงแค่ re-initialize โดยอ่านไฟล์การตั้งค่าปัจจุบันใหม่ ส่วน restart แบบเต็มจะตัดการเชื่อมต่อของไคลเอ็นต์ที่เชื่อมต่ออยู่กับเซิร์ฟเวอร์ นอกจากนี้ยัง re-initialize ไฟล์การตั้งค่า

โดยทั่วไป คุณจะรีสตาร์ทบริการเซิร์ฟเวอร์โดยใช้หนึ่งในสามวิธี

วิธีแรกคือใช้สคริปต์จาก /etc/init.d/ — ทั่วไปสำหรับเซิร์ฟเวอร์ที่รัน Debian ก่อนเวอร์ชัน 8.x หรือ Ubuntu ก่อน 15.04 วิธีที่สองคือใช้คำสั่ง systemctl วิธีที่สามและปลอดภัยที่สุดคือใช้ apachectl

การใช้ Init.d

Linux distributions ที่พึ่งพาสคริปต์ /etc/init.d/ อาจใช้คำสั่งใดคำสั่งหนึ่งจากสามคำสั่งต่อไปนี้เพื่อรีสตาร์ท Apache:

/etc/init.d/apache2 restart
sudo /etc/init.d/apache2 restart
sudo service apache2 restart

เพื่อทำ graceful restart ให้แทนคำว่า restart ด้วย reload

สำหรับเซิร์ฟเวอร์ CentOS และ RHEL 6.x หรือเก่ากว่า ให้ใช้สคริปต์ service แต่แทนที่จะเรียกมันว่า apache2 คุณจะเรียกมันว่า httpd แทน:

service httpd restart

การใช้ Systemctl

ระบบปฏิบัติการใหม่กว่า เช่น Debian 8.x, Ubuntu 15.04, CentOS/RHEL 7.x และเวอร์ชันใหม่กว่า ใช้ httpd ให้รันคำสั่งต่อไปนี้:

systemctl restart httpd.service

การใช้ Apachectl

สคริปต์ apachectl เสนอวิธีทั่วไปที่มุ่งเป้าเป็น agnostic (ไม่ขึ้นอยู่กับ) distribution เซิร์ฟเวอร์เฉพาะของคุณ เพื่อรันมัน คุณต้องรันในฐานะ root user:

sudo apachectl -k restart
sudo apachectl -k graceful

เมธอด graceful คล้ายกับเมธอด reload