คุณจะรีสตาร์ท Apache ได้อย่างไร


249

ฉันเปลี่ยนจาก SLES เป็น Ubuntu และตอนนี้ฉันต้องการรีสตาร์ทเซิร์ฟเวอร์ในพื้นที่ของฉัน ใน SLES ฉันใช้:

rcapache2 restart

แต่อย่างใดดูเหมือนว่าจะไม่ทำงานใน Ubuntu :(

ฉันจะเริ่ม Apache ใหม่ได้อย่างไร

คำตอบ:


364

sudo service apache2 restart สำหรับวิธีที่ยืมมาจาก Red Hat


1
ฉันคิดว่าserviceเป็นวิธี LSB และควรทำงานในการกระจายมากที่สุดตอนนี้ที่ Debian และ Ubuntu ได้รับในที่สุด
Marius Gedminas

10
sudo restart apache2Ubuntu 12.04ไม่ได้ทำงานใน ไม่แน่ใจใน Ubuntu รุ่นอื่น ๆ
saji89

2
@ saji89 คุณต้องทำsudo service apache2 restartแล้วมันจะได้ผล
Kevdog777

9
sudo restart apache2ไม่ทำงานใน Ubuntu 14.04 sudo service apache2 restartทำงานหนัก
toesslab

105

คุณต้องการรีสตาร์ท Apache หรือคุณต้องการโหลดการตั้งค่าใหม่อย่างสง่างามหรือไม่

ทุกคนตอบคำถามแรก คุณสามารถทำสิ่งที่สองด้วย

sudo service apache2 reload

การโหลดซ้ำอย่างสง่างามนั้นเร็วขึ้นเล็กน้อยและไม่มีการหยุดทำงาน

มีข้อแม้หนึ่งข้อ: หากไฟล์กำหนดค่า apache ของคุณมีข้อผิดพลาด (เช่นกำหนดค่าล็อกไฟล์ในไดเรกทอรีที่ไม่มีอยู่) เซิร์ฟเวอร์อาจออกจากการทำงานอย่างเงียบ ๆ โดยไม่พิมพ์ข้อความแสดงข้อผิดพลาดไปยังคอนโซล ข้อผิดพลาดอื่น ๆ ส่วนใหญ่จะถูกจับโดยapache2ctl configtestที่ทำงานก่อนที่จะทำโหลดจริงกับservice apache2 reloadapache2ctl graceful


1
ใช่ ใช้ความสง่างามจะดีกว่ามากหากคุณต้องการเริ่มต้นใหม่โดยไม่เริ่มจากผู้ชมเว็บไซต์ของคุณ!
tommed

ฉันพบว่ามันเป็นข้อได้เปรียบของการรีสตาร์ทว่าถ้า Apache ไม่ทำงานก็จะเริ่มขึ้น -> จะโหลดยังเริ่มต้นได้หรือไม่
Torben Gundtofte-Bruun

ฉันไม่คิดอย่างนั้น - ยิ่งแย่กว่าการโหลดซ้ำจะหยุด apache ที่ทำงานอยู่หากคุณสร้างข้อผิดพลาดทางไวยากรณ์ในไฟล์ปรับแต่ง
Marius Gedminas

3
เรียกใช้เสมอsudo apache2ctl configtestก่อนที่จะทำการรีสตาร์ทอย่างนุ่มนวล การรีสตาร์ทอย่างนุ่มนวลจะล้มเหลวและ apache จะหยุดทำงานหากการตั้งค่ามีข้อผิดพลาดทางไวยากรณ์
Mikko Rantalainen

@MikkoRantalainen: ขอบคุณผมได้แก้ไขคำตอบที่จะลดลงดิบapache2ctl gracefulและแทนที่จะแนะนำเพียงservice apache2 reloadซึ่งไหลก่อนconfigtest graceful
Marius Gedminas

26

วิธีที่แนะนำภายใต้ Ubuntu เพื่อเริ่ม / หยุดบริการ (ไม่ใช่เพียง Apache) คือการใช้คำสั่ง start / stop / reload (ซึ่งเป็นลิงก์สัญลักษณ์ไปยัง โปรแกรมinitctlซึ่งเป็นส่วนหนึ่งของการพุ่งพรวด )

สำหรับบริการที่ใช้/etc/init.dสคริปต์ดั้งเดิมสคริปต์ที่เกี่ยวข้องจะถูกเรียกด้วยพารามิเตอร์ที่ถูกต้อง สำหรับการให้บริการที่ใช้โครงสร้างพื้นฐานพุ่งพรวดที่เปลี่ยนแปลงเหตุการณ์ที่เหมาะสมจะได้รับการส่งสัญญาณไปยัง พุ่งพรวดภูตผ่าน initctl

ดังนั้นในการเริ่ม / หยุด / โหลดใหม่ / รีสตาร์ท apache บน Ubuntu คุณสามารถใช้:

sudo start apache2
sudo stop apache2
sudo reload apache2
sudo restart apache2

20
sudo /etc/init.d/apache2 restart

แน่นอนคุณสามารถสลับออกrestartสำหรับstop, startและ (ฉันคิด)reload


2
เมื่อทำสิ่งนี้ภายใต้ Ubuntu ล่าสุดคุณจะได้รับข้อความเกี่ยวกับการทำสิ่งใหม่แม้ว่ามันจะยังคงดำเนินการตามคำสั่งที่คุณต้องการ
jfmessier

ฉันไม่ได้ตระหนักว่า Apache ได้ย้ายไปที่การพุ่งพรวดแล้ว
Oli

ฉันไม่เห็นข้อความนั้นอีก
ทิม


11

ดังที่ Marius กล่าวว่าควรใช้อย่างสง่างามเพื่อเริ่มใหม่:

sudo apache2ctl graceful

หรือ

sudo apache2ctl graceful-stop

เพื่อหยุด Apache อย่างสง่างาม

คำสั่งเหล่านี้รอจนกว่าจะมีการให้บริการหน้าเว็บทั้งหมดก่อนที่จะรีสตาร์ท / หยุดเว็บเซิร์ฟเวอร์เพื่อให้ผู้ใช้ของคุณไม่ได้รับครึ่งหน้าเว็บ


4

ก่อนอื่นให้คุณตรวจสอบสถานะโดยใช้คำสั่งนี้

sudo service apache2 status

จากนั้นหยุดบริการที่กำลังทำงานอยู่

sudo service apache2 stop

จากนั้นใช้คำสั่งนี้:

sudo /opt/lampp/lampp start

วิธีนี้ใช้ได้ผลสำหรับฉัน


2

หากคุณติดตั้ง Apache 2.4 เวอร์ชั่นในระบบของคุณเพื่อเริ่มต้นใหม่หรือหยุดเซิร์ฟเวอร์ Apache ของคุณบนระบบภายในของคุณคุณควรรันคำสั่งต่อไปนี้

./apachectl start

หรือคุณสามารถใช้การรีสตาร์ท , หยุดยังตามความต้องการของคุณ นี่คือรหัสทดสอบ


1

คุณสามารถใช้บริการต่าง ๆ ในการรีสตาร์ท Apache

service apache2 restart

และคุณสามารถใช้ฟังก์ชั่นทั้งหมดได้ (หยุด - เริ่ม - โหลดซ้ำ)


1

วิธีที่ดีที่สุดในการรีสตาร์ทเซิร์ฟเวอร์ Apache ของคุณคือการใช้คำสั่งต่อไปนี้:

$ sudo service apache2 restart

Alter คุณสามารถใช้คำสั่งด้านล่าง:

$ sudo /etc/init.d/apache2 restart

1
แหล่งที่มาของคำสั่ง: รีสตาร์ท Apache Ubuntu
Razor Rassh

0
sudo systemctl restart apache2

systemctl - ควบคุมระบบ systemd และผู้จัดการบริการ

systemctl อาจถูกใช้เพื่อวิปัสสนาและควบคุมสถานะของระบบ "systemd" และผู้จัดการบริการ


-1

ถ้าคุณเป็นรูท: (ในรูทของอูบุนตูถูกปิดใช้งานฉันคิดว่าใช้คำสั่ง 'sudo'!)

$ /etc/init.d/apache stop
$ /etc/init.d/apache start
$ /etc/init.d/apache restart
$ /etc/init.d/apache reload 

(ถ้าคุณใช้ a2ensite หรือ a2dissite คุณจะต้องโหลด apache ใหม่อีกครั้ง)


rootไม่ได้ปิดการใช้งานมันแค่ไม่มีรหัสผ่านหากคุณไม่ได้ให้ด้วยตัวคุณเอง
Mikael Auno

1
เป็นที่//stop apacheควรจะเป็นความคิดเห็น? ถ้าเป็นเช่นนั้นสัญกรณ์มาตรฐานเปลือกจะเป็น#stop apache, //ไม่ทำงานในทุบตี
มิเกล

@MikaelAuno บัญชีรูทถูกปิดใช้งานหากไม่มีรหัสผ่าน
T0xicCode

1
@ xav0989 นั่นเป็นเรื่องของความหมาย แน่นอนว่าคุณไม่สามารถเข้าสู่ระบบเป็นrootหรือเข้าสู่ระบบเป็นrootไปในทางที่ต้องใด ๆrootรหัสผ่าน 's สำหรับเรื่องที่ แต่มีวิธีการอื่น ๆ rootที่จะกลายเป็น ลองตัวอย่างsudo -iแล้วตามด้วยwhoamiคุณจะเห็นว่าคุณลงชื่อเข้าใช้rootด้วย นอกจากนี้หากคุณทำเช่นนั้นps aux | grep rootคุณจะเห็นว่าคุณมีกระบวนการมากมายที่ระบบของคุณทำงานrootอยู่ ดังนั้นเนื้อหาrootจะไม่ถูกปิดใช้งาน
Mikael Auno

@MikaelAuno sudo -E -sหรือ โดยปิดการใช้งานฉันสมมติว่าสิ่งที่มีความหมายคือคุณไม่สามารถเข้าสู่ระบบได้โดยตรงrootแต่คุณยังสามารถเรียกใช้กระบวนการrootได้
T0xicCode
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.