不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 > Linux下重啟apache的方法

Linux下重啟apache的方法

時間: 志藝942 分享

Linux下重啟apache的方法

  你還在為不知道Linux下重啟apache的方法而不知所措么?Linux下重啟apache你了解多少?下面來是學(xué)習(xí)啦小編為大家收集的Linux下重啟apache的方法,歡迎大家閱讀:

  Linux下重啟apache的方法

  Linux系統(tǒng)為Ubuntu

  一、Start Apache 2 Server /啟動apache服務(wù)

  # /etc/init.d/apache2 start

  or

  $ sudo /etc/init.d/apache2 start

  二、 Restart Apache 2 Server /重啟apache服務(wù)

  # /etc/init.d/apache2 restart

  or

  $ sudo /etc/init.d/apache2 restart

  三、Stop Apache 2 Server /停止apache服務(wù)

  # /etc/init.d/apache2 stop

  or

  $ sudo /etc/init.d/apache2 stop

  linux下的apache 重啟和停止

  本文檔敘述了在類Unix系統(tǒng)上如何停止和重啟Apache 。 Windows NT/2000/XP/2003的用戶請參見以服務(wù)方式運(yùn)行Apache ,Windows 9x/ME用戶則參見在控制臺中運(yùn)行Apache 。

  簡介

  為了停止或者重新啟動Apache ,你必須向正在運(yùn)行的httpd進(jìn)程發(fā)送信號。有兩種發(fā)送信號的方法。第一種方法是直接使用UNIX的kill命令向運(yùn)行中的進(jìn)程發(fā)送信號。你也許你會注意到你的系統(tǒng)里運(yùn)行著很多httpd進(jìn)程。但你不應(yīng)該直接對它們中的任何一個發(fā)送信號,而只要對已經(jīng)在PidFile中記載下了自身PID的父進(jìn)程發(fā)送信號。也就是說,你不必對父進(jìn)程以外的任何進(jìn)程發(fā)送信號。你可以向父進(jìn)程發(fā)送三種信號:TERM、HUP、USR1 ,我們過一會兒再進(jìn)行詳細(xì)的說明。

  你可以用下面這樣的命令來向父進(jìn)程發(fā)送信號:

  kill -TERM `cat /usr/local/apache2/logs/httpd.pid`

  第二種方法是使用下面將要描述的httpd二進(jìn)制可執(zhí)行文件的 -k 命令行選項:stop、restart、graceful、graceful-stop 。不過我們推薦你使用apachectl控制腳本來向httpd二進(jìn)制可執(zhí)行文件傳遞這些選項。

  當(dāng)你向httpd發(fā)送信號后,你可以這樣來讀取它的進(jìn)行過程:

  tail -f /usr/local/apache2/logs/error_log

  你可以修改這些示例以適應(yīng)你的ServerRoot和PidFile設(shè)置。

  立即停止

  信號:TERM

  apachectl -k stop

  發(fā)送TERM或stop信號到父進(jìn)程可以使它立刻殺死所有子進(jìn)程。這將花費(fèi)一些時間來殺死所有子進(jìn)程。然后父進(jìn)程自己也退出。所有進(jìn)行中的請求將被強(qiáng)行中止,而且不再接受其它請求。

  優(yōu)雅重啟

  信號:USR1

  apachectl -k graceful

  USR1或graceful信號使得父進(jìn)程建議子進(jìn)程在完成它們現(xiàn)在的請求后退出(如果他們沒有進(jìn)行服務(wù),將會立刻退出)。父進(jìn)程重新讀入配置文件并重新打開日志文件。每當(dāng)一個子進(jìn)程死掉,父進(jìn)程立刻用新的配置文件產(chǎn)生一個新的子進(jìn)程并立刻開始伺服新的請求。

  重啟代碼的設(shè)計能夠確保MPM進(jìn)程控制指令的正常運(yùn)作,也就是在重啟過程中確保有適當(dāng)數(shù)量的進(jìn)程和線程以響應(yīng)客戶端的請求。它是這樣StartServers的:如果在一秒鐘以后還沒有新創(chuàng)建StartServers個子進(jìn)程,則創(chuàng)建出足夠完成現(xiàn)在任務(wù)的子進(jìn)程個數(shù)。因此,代碼除了保有能夠維持服務(wù)器的現(xiàn)有負(fù)載數(shù)量的子進(jìn)程外,也確保StartServers按你的意愿運(yùn)作。

  使用mod_status的用戶會注意到在USR1信號發(fā)出后,服務(wù)器的統(tǒng)計信息沒有被清零。代碼被寫成既能將你服務(wù)器無法伺服新請求的時間降至最少(這些請求將被操作系統(tǒng)放到隊列里,使得它們不會丟失),又能遵從你的參數(shù)優(yōu)化。為了做到這一點(diǎn),它將在重新生成子進(jìn)程的過程中,在scoreboard上保存所有子進(jìn)程的狀態(tài)。

  mod_status還會將那些在優(yōu)雅重啟前就已經(jīng)開始而沒有結(jié)束伺服請求的子進(jìn)程用一個"G"來標(biāo)志。

  目前,日志滾動腳本還無法使用USR1來確定所有寫入預(yù)重啟日志的子進(jìn)程都已結(jié)束。我們建議你在發(fā)出了USR1信號后等待一個適當(dāng)?shù)臅r間,然后再對舊的日志做處理。比如說如果對于一個窄帶用戶來說,大部分的點(diǎn)擊處理將在10分鐘之內(nèi)完成,那么你應(yīng)該在處理舊的日志前等待15分鐘。

  如 果Apache重啟時發(fā)現(xiàn)配置文件有誤,那么父進(jìn)程將不會重啟,而是報錯并退出。在優(yōu)雅重啟的情況下,它將在處理中的子進(jìn)程存在的情況下維持它的存在(就 是那些被要求在處理完它們的請求后"優(yōu)雅退出"的子進(jìn)程)。如果你要重啟服務(wù)器,這將導(dǎo)致一些問題:它將不能綁定到它的監(jiān)聽端口。在執(zhí)行重啟之前,你可以 用 -t 命令行參數(shù)來檢查配置文件語法的正確性(參見httpd)。但這仍然不能保證服務(wù)器一定可以正確的重啟。為了從語法和語義兩方面檢查配置文件,你可以用一個非root用戶來啟動httpd。如果沒有錯誤,它將嘗試去打開套接字和日志文件,繼而因沒有root權(quán)限而失敗(或是因為現(xiàn)在運(yùn)行的httpd已經(jīng)綁定了這些端口)。如果是因為其他原因那么就可能是一個配置文件產(chǎn)生的錯誤,你就應(yīng)當(dāng)在進(jìn)行優(yōu)雅重啟之前改正這個錯誤。立即重啟

  信號:HUP

  apachectl -k restart

  向父進(jìn)程發(fā)送HUP或restart信號會使它象收到TERM信號一樣殺掉所有的子進(jìn)程,不同之處在于父進(jìn)程本身并不退出。它重新讀入配置文件、重新打開日志文件。然后產(chǎn)生一系列新的子進(jìn)程來繼續(xù)服務(wù)。

  使用mod_status的用戶會注意到在HUP信號發(fā)出后,服務(wù)器統(tǒng)計信息會被清零。

  如果你重啟時配置文件有誤,那么父進(jìn)程將不會重啟,而是報錯并退出。參見上文中避免的方法。優(yōu)雅停止

  信號:WINCH

  apachectl -k graceful-stop

  WINCH或graceful-stop信號使得父進(jìn)程建議子進(jìn)程在完成它們現(xiàn)在的請求后退出(如果他們沒有進(jìn)行服務(wù),將會立刻退出)。然后父進(jìn)程刪除PidFile并停止在所有端口上的監(jiān)聽。父進(jìn)程仍然繼續(xù)運(yùn)行并監(jiān)視正在處理請求的子進(jìn)程,一旦所有子進(jìn)程完成任務(wù)并退出或者超過由GracefulShutdownTimeout指令規(guī)定的時間,父進(jìn)程將會退出。在超時的情況下,所有子進(jìn)程都將接收到TERM信號并被強(qiáng)制退出。

  在"優(yōu)雅"狀態(tài)下,TERM信號將會立即中止父進(jìn)程和所有子進(jìn)程。由于PidFile已經(jīng)被刪除,你將無法使用apachectl或httpd發(fā)送該信號。

  graceful-stop允許你同時運(yùn)行多個相同配置的httpd實例。這在對Apache進(jìn)行平滑升級的時候是一個非常有用的特性。不過它在某些配置的情況下同樣可能會導(dǎo)致死鎖和競爭條件。

  必須注意確保諸如Lockfile和ScriptSock之類的磁盤文件包含服務(wù)器的PID ,并且能夠安全的共存。然而如果一個配置指令、第三方模塊或持久CGI使用任何磁盤鎖或狀態(tài)文件,必須注意確保多個httpd運(yùn)行實例之間不會爭搶文件。

  你還必須防止?jié)撛诘母偁帡l件,比如使用rotatelogs風(fēng)格的管道日志。運(yùn)行中的多個rotatelogs實例企圖同時滾動同一個日志文件可能會導(dǎo)致互相破壞對方的日志文件。

  附錄:信號和競爭條件

  在Apache 1.2b9 之前,有很多關(guān)于重啟和死亡信號的競爭條件。關(guān) 于競爭條件的一個簡單描述是:一個時間敏感的問題,如果一些事情在不適當(dāng)?shù)臅r間或以不恰當(dāng)?shù)捻樞虬l(fā)生,它將作出你不期望的反應(yīng);如果同樣的事情在恰當(dāng)?shù)臅r 間發(fā)生,則不會出現(xiàn)異常。憑借那些擁有"正確"特性設(shè)置的體系結(jié)構(gòu),我們盡量避免了它們的出現(xiàn)。但值得注意的是,仍然有一些競爭條件存在于這樣的體系結(jié)構(gòu) 中。

  使用物理磁盤的ScoreBoardFile就有損壞ScoreBoard的潛在危險。這將發(fā)生在"bind: Address already in use"(HUP之后)或"long lost child came home!"(USR1之后)時。前者是一個致命錯誤,而后者則會使服務(wù)器丟失ScoreBoard的一個記錄。所以我們建議多使用優(yōu)雅重啟,偶爾使用硬重啟。這些問題很難解決,但幸運(yùn)的是大多數(shù)結(jié)構(gòu)并不需要ScoreBoard文件。而如果你需要這樣的結(jié)構(gòu),你可以參考ScoreBoardFile文檔。

  當(dāng) 每個子進(jìn)程在一個HTTP的持續(xù)連接(KeepAlive)中涉及到第二個并發(fā)的請求時,所有的結(jié)構(gòu)都會或多或少存在競爭狀態(tài)的問題。它將在讀取了請求而 沒有讀取任何請求頭之后立刻退出。這個修復(fù)對于1.2來說來得太晚了。但因為持續(xù)連接的客戶端已經(jīng)考慮到網(wǎng)絡(luò)延時和服務(wù)器超時會造成類似的情況,所以理論 上說,這不是一個太大的問題。而實際上似乎也沒有任何影響:在一個測試案例中服務(wù)器在一秒之內(nèi)被重啟了20次,而客戶端卻成功的瀏覽了網(wǎng)站,而且沒有任何 破損的圖片或空文檔。


看了“Linux下重啟apache的方法”還想看:

1.Linux中的Apache服務(wù)查看和啟動的方法

2.apache服務(wù)器如何配置多站點(diǎn)

3.LINUX下配置管理APACHE服務(wù)器的方法

4.Linux系統(tǒng)中重啟命令如何使用

5.Linux的重啟命令有哪些 Linux的重啟命令教程

2864788