您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)Linux中怎么重啟apache,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
Linux系統(tǒng)為Ubuntu
一、Start Apache 2 Server /啟動(dòng)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 重啟和停止
本文檔敘述了在類(lèi)Unix系統(tǒng)上如何停止和重啟Apache 。 Windows NT/2000/XP/2003的用戶請(qǐng)參見(jiàn)以服務(wù)方式運(yùn)行Apache ,Windows 9x/ME用戶則參見(jiàn)在控制臺(tái)中運(yùn)行Apache 。
簡(jiǎn)介
為了停止或者重新啟動(dòng)Apache ,你必須向正在運(yùn)行的httpd進(jìn)程發(fā)送信號(hào)。有兩種發(fā)送信號(hào)的方法。第一種方法是直接使用UNIX的kill命令向運(yùn)行中的進(jìn)程發(fā)送信號(hào)。你也許你會(huì)注意到你的系統(tǒng)里運(yùn)行著很多httpd進(jìn)程。但你不應(yīng)該直接對(duì)它們中的任何一個(gè)發(fā)送信號(hào),而只要對(duì)已經(jīng)在PidFile中記載下了自身PID的父進(jìn)程發(fā)送信號(hào)。也就是說(shuō),你不必對(duì)父進(jìn)程以外的任何進(jìn)程發(fā)送信號(hào)。你可以向父進(jìn)程發(fā)送三種信號(hào):TERM、HUP、USR1 ,我們過(guò)一會(huì)兒再進(jìn)行詳細(xì)的說(shuō)明。
你可以用下面這樣的命令來(lái)向父進(jìn)程發(fā)送信號(hào):
kill -TERM `cat /usr/local/apache2/logs/httpd.pid`
第二種方法是使用下面將要描述的httpd二進(jìn)制可執(zhí)行文件的 -k 命令行選項(xiàng):stop、restart、graceful、graceful-stop 。不過(guò)我們推薦你使用apachectl控制腳本來(lái)向httpd二進(jìn)制可執(zhí)行文件傳遞這些選項(xiàng)。
當(dāng)你向httpd發(fā)送信號(hào)后,你可以這樣來(lái)讀取它的進(jìn)行過(guò)程:
tail -f /usr/local/apache2/logs/error_log
你可以修改這些示例以適應(yīng)你的ServerRoot和PidFile設(shè)置。
立即停止
信號(hào):TERM
apachectl -k stop
發(fā)送TERM或stop信號(hào)到父進(jìn)程可以使它立刻殺死所有子進(jìn)程。這將花費(fèi)一些時(shí)間來(lái)殺死所有子進(jìn)程。然后父進(jìn)程自己也退出。所有進(jìn)行中的請(qǐng)求將被強(qiáng)行中止,而且不再接受其它請(qǐng)求。
優(yōu)雅重啟
信號(hào):USR1
apachectl -k graceful
USR1或graceful信號(hào)使得父進(jìn)程建議子進(jìn)程在完成它們現(xiàn)在的請(qǐng)求后退出(如果他們沒(méi)有進(jìn)行服務(wù),將會(huì)立刻退出)。父進(jìn)程重新讀入配置文件并重新打開(kāi)日志文件。每當(dāng)一個(gè)子進(jìn)程死掉,父進(jìn)程立刻用新的配置文件產(chǎn)生一個(gè)新的子進(jìn)程并立刻開(kāi)始伺服新的請(qǐng)求。
重啟代碼的設(shè)計(jì)能夠確保MPM進(jìn)程控制指令的正常運(yùn)作,也就是在重啟過(guò)程中確保有適當(dāng)數(shù)量的進(jìn)程和線程以響應(yīng)客戶端的請(qǐng)求。它是這樣StartServers的:如果在一秒鐘以后還沒(méi)有新創(chuàng)建StartServers個(gè)子進(jìn)程,則創(chuàng)建出足夠完成現(xiàn)在任務(wù)的子進(jìn)程個(gè)數(shù)。因此,代碼除了保有能夠維持服務(wù)器的現(xiàn)有負(fù)載數(shù)量的子進(jìn)程外,也確保StartServers按你的意愿運(yùn)作。
使用mod_status的用戶會(huì)注意到在USR1信號(hào)發(fā)出后,服務(wù)器的統(tǒng)計(jì)信息沒(méi)有被清零。代碼被寫(xiě)成既能將你服務(wù)器無(wú)法伺服新請(qǐng)求的時(shí)間降至最少(這些請(qǐng)求將被操作系統(tǒng)放到隊(duì)列里,使得它們不會(huì)丟失),又能遵從你的參數(shù)優(yōu)化。為了做到這一點(diǎn),它將在重新生成子進(jìn)程的過(guò)程中,在scoreboard上保存所有子進(jìn)程的狀態(tài)。
mod_status還會(huì)將那些在優(yōu)雅重啟前就已經(jīng)開(kāi)始而沒(méi)有結(jié)束伺服請(qǐng)求的子進(jìn)程用一個(gè)"G"來(lái)標(biāo)志。
目前,日志滾動(dòng)腳本還無(wú)法使用USR1來(lái)確定所有寫(xiě)入預(yù)重啟日志的子進(jìn)程都已結(jié)束。我們建議你在發(fā)出了USR1信號(hào)后等待一個(gè)適當(dāng)?shù)臅r(shí)間,然后再對(duì)舊的日志做處理。比如說(shuō)如果對(duì)于一個(gè)窄帶用戶來(lái)說(shuō),大部分的點(diǎn)擊處理將在10分鐘之內(nèi)完成,那么你應(yīng)該在處理舊的日志前等待15分鐘。
如 果Apache重啟時(shí)發(fā)現(xiàn)配置文件有誤,那么父進(jìn)程將不會(huì)重啟,而是報(bào)錯(cuò)并退出。在優(yōu)雅重啟的情況下,它將在處理中的子進(jìn)程存在的情況下維持它的存在(就 是那些被要求在處理完它們的請(qǐng)求后"優(yōu)雅退出"的子進(jìn)程)。如果你要重啟服務(wù)器,這將導(dǎo)致一些問(wèn)題:它將不能綁定到它的監(jiān)聽(tīng)端口。在執(zhí)行重啟之前,你可以 用 -t 命令行參數(shù)來(lái)檢查配置文件語(yǔ)法的正確性(參見(jiàn)httpd)。但這仍然不能保證服務(wù)器一定可以正確的重啟。為了從語(yǔ)法和語(yǔ)義兩方面檢查配置文件,你可以用一個(gè)非root用戶來(lái)啟動(dòng)httpd。如果沒(méi)有錯(cuò)誤,它將嘗試去打開(kāi)套接字和日志文件,繼而因沒(méi)有root權(quán)限而失敗(或是因?yàn)楝F(xiàn)在運(yùn)行的httpd已經(jīng)綁定了這些端口)。如果是因?yàn)槠渌蚰敲淳涂赡苁且粋€(gè)配置文件產(chǎn)生的錯(cuò)誤,你就應(yīng)當(dāng)在進(jìn)行優(yōu)雅重啟之前改正這個(gè)錯(cuò)誤。立即重啟
信號(hào):HUP
apachectl -k restart
向父進(jìn)程發(fā)送HUP或restart信號(hào)會(huì)使它象收到TERM信號(hào)一樣殺掉所有的子進(jìn)程,不同之處在于父進(jìn)程本身并不退出。它重新讀入配置文件、重新打開(kāi)日志文件。然后產(chǎn)生一系列新的子進(jìn)程來(lái)繼續(xù)服務(wù)。
使用mod_status的用戶會(huì)注意到在HUP信號(hào)發(fā)出后,服務(wù)器統(tǒng)計(jì)信息會(huì)被清零。
如果你重啟時(shí)配置文件有誤,那么父進(jìn)程將不會(huì)重啟,而是報(bào)錯(cuò)并退出。參見(jiàn)上文中避免的方法。優(yōu)雅停止
信號(hào):WINCH
apachectl -k graceful-stop
WINCH或graceful-stop信號(hào)使得父進(jìn)程建議子進(jìn)程在完成它們現(xiàn)在的請(qǐng)求后退出(如果他們沒(méi)有進(jìn)行服務(wù),將會(huì)立刻退出)。然后父進(jìn)程刪除PidFile并停止在所有端口上的監(jiān)聽(tīng)。父進(jìn)程仍然繼續(xù)運(yùn)行并監(jiān)視正在處理請(qǐng)求的子進(jìn)程,一旦所有子進(jìn)程完成任務(wù)并退出或者超過(guò)由GracefulShutdownTimeout指令規(guī)定的時(shí)間,父進(jìn)程將會(huì)退出。在超時(shí)的情況下,所有子進(jìn)程都將接收到TERM信號(hào)并被強(qiáng)制退出。
在"優(yōu)雅"狀態(tài)下,TERM信號(hào)將會(huì)立即中止父進(jìn)程和所有子進(jìn)程。由于PidFile已經(jīng)被刪除,你將無(wú)法使用apachectl或httpd發(fā)送該信號(hào)。
graceful-stop允許你同時(shí)運(yùn)行多個(gè)相同配置的httpd實(shí)例。這在對(duì)Apache進(jìn)行平滑升級(jí)的時(shí)候是一個(gè)非常有用的特性。不過(guò)它在某些配置的情況下同樣可能會(huì)導(dǎo)致死鎖和競(jìng)爭(zhēng)條件。
必須注意確保諸如Lockfile和ScriptSock之類(lèi)的磁盤(pán)文件包含服務(wù)器的PID ,并且能夠安全的共存。然而如果一個(gè)配置指令、第三方模塊或持久CGI使用任何磁盤(pán)鎖或狀態(tài)文件,必須注意確保多個(gè)httpd運(yùn)行實(shí)例之間不會(huì)爭(zhēng)搶文件。
你還必須防止?jié)撛诘母?jìng)爭(zhēng)條件,比如使用rotatelogs風(fēng)格的管道日志。運(yùn)行中的多個(gè)rotatelogs實(shí)例企圖同時(shí)滾動(dòng)同一個(gè)日志文件可能會(huì)導(dǎo)致互相破壞對(duì)方的日志文件。
附錄:信號(hào)和競(jìng)爭(zhēng)條件
在Apache 1.2b9 之前,有很多關(guān)于重啟和死亡信號(hào)的競(jìng)爭(zhēng)條件。關(guān) 于競(jìng)爭(zhēng)條件的一個(gè)簡(jiǎn)單描述是:一個(gè)時(shí)間敏感的問(wèn)題,如果一些事情在不適當(dāng)?shù)臅r(shí)間或以不恰當(dāng)?shù)捻樞虬l(fā)生,它將作出你不期望的反應(yīng);如果同樣的事情在恰當(dāng)?shù)臅r(shí) 間發(fā)生,則不會(huì)出現(xiàn)異常。憑借那些擁有"正確"特性設(shè)置的體系結(jié)構(gòu),我們盡量避免了它們的出現(xiàn)。但值得注意的是,仍然有一些競(jìng)爭(zhēng)條件存在于這樣的體系結(jié)構(gòu) 中。
使用物理磁盤(pán)的ScoreBoardFile就有損壞ScoreBoard的潛在危險(xiǎn)。這將發(fā)生在"bind: Address already in use"(HUP之后)或"long lost child came home!"(USR1之后)時(shí)。前者是一個(gè)致命錯(cuò)誤,而后者則會(huì)使服務(wù)器丟失ScoreBoard的一個(gè)記錄。所以我們建議多使用優(yōu)雅重啟,偶爾使用硬重啟。這些問(wèn)題很難解決,但幸運(yùn)的是大多數(shù)結(jié)構(gòu)并不需要ScoreBoard文件。而如果你需要這樣的結(jié)構(gòu),你可以參考ScoreBoardFile文檔。
當(dāng) 每個(gè)子進(jìn)程在一個(gè)HTTP的持續(xù)連接(KeepAlive)中涉及到第二個(gè)并發(fā)的請(qǐng)求時(shí),所有的結(jié)構(gòu)都會(huì)或多或少存在競(jìng)爭(zhēng)狀態(tài)的問(wèn)題。它將在讀取了請(qǐng)求而 沒(méi)有讀取任何請(qǐng)求頭之后立刻退出。這個(gè)修復(fù)對(duì)于1.2來(lái)說(shuō)來(lái)得太晚了。但因?yàn)槌掷m(xù)連接的客戶端已經(jīng)考慮到網(wǎng)絡(luò)延時(shí)和服務(wù)器超時(shí)會(huì)造成類(lèi)似的情況,所以理論 上說(shuō),這不是一個(gè)太大的問(wèn)題。
以上就是Linux中怎么重啟apache,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。