一般在更改 Apache 的設定檔之後,都會重新啓動 Apache 的服務(service),但是如果你的 Apache 網頁伺服器有很多人在用,這樣重新啓動會造成使用者的連線中斷等問題,這裡介紹如何在 Debian/Ubuntu 或是 CentOS 等 Linux 中不會影響 Apache 連線卻可以重新啓動並載入設定檔的方法。
一般 Apache 伺服器不管版本是 v1.x 或是 v2.x 都會有以下的指令可以使用:
系統管理者可以利用這些指令控制 Apache 伺服器的啟動或停止等動作。
graceful 跟 restart 不太一樣,他不會像 restart 一樣直接中斷目前正在進行的連線,而是會等待所有的連線都結束之後,才會重新啟動、載入設定檔,並且重新開啟 log 紀錄檔。而 graceful 在重新啟動之前,也會使用 apache2ctl configtest
來測試設定檔是否正確。
而 graceful 的用法很簡單,就像這樣:
apache2ctl graceful
在 RHEL/CentOS Linux 中,可使用 Sys V init script 的方式:
/etc/init.d/httpd graceful
或是
/sbin/service httpd graceful
如果是 Debian / Ubuntu Linux 中,則可使用 reload 參數:
/etc/init.d/apache2 reload
在這裡的 reload 其實就是 graceful,它只是換一個讓人比較容易看得懂的字眼而已。
參考資料:nixCraft、apache2ctl(8)