Apache原理及架構(gòu)- IT運(yùn)維
2020-05-09 16:07 作者:艾銻無限 瀏覽量:
對于
IT運(yùn)維來說,配置各種web環(huán)境是常見的日常工作。今天跟大家介紹這款大家非常熟悉的web軟件Apache。Apache是世界使用排名第一的Web服務(wù)器軟件。它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一。
web服務(wù)器端的工作流程:
(1)客戶端發(fā)送請求
客戶端(通過瀏覽器)和Web服務(wù)器建立TCP連接,連接建立以后,向Web服務(wù)器發(fā)出訪問請求(如get)。根據(jù)HTTP協(xié)議,該請求中包含了客戶端的IP地址、瀏覽器的類型和請求的URL等一系列信息。
(2)服務(wù)器解析請求
Web服務(wù)器對請求按照HTTP協(xié)議進(jìn)行解碼來確定進(jìn)一步的動(dòng)作,設(shè)計(jì)的內(nèi)容有三鼐要點(diǎn):方法(GET)、文檔(/sample.html)、和瀏覽器使用的協(xié)議(HTTP/1.1)其中方法告訴服務(wù)器應(yīng)完動(dòng)的動(dòng)作,GET方法的含義很明顯是:服務(wù)器應(yīng)定位、讀取文件并將它返回給客戶。
Web服務(wù)器軟件現(xiàn)在就知道了,它應(yīng)該找到文件/sample.html,并使用HTTP/1.1協(xié)議將內(nèi)存返回給客戶。信息是經(jīng)過與請求到來相同的連接發(fā)出的,所以服務(wù)器不需要定們客戶或創(chuàng)建新的連接。
(3)讀取其它信息(非必須步驟)
Web服務(wù)器根據(jù)需要去讀取請求的其它部分。在HTTP/1.1下,客戶還應(yīng)給服務(wù)器提供關(guān)于它的一些信息。元信息(metainformation)可用來描述瀏覽器及其能力,以使服務(wù)器能據(jù)此確定如何返回應(yīng)答。
(4)完成請求的動(dòng)作
若現(xiàn)在沒有錯(cuò)誤出現(xiàn),WWW服務(wù)器將執(zhí)行請求所要求的動(dòng)作。要獲?。℅ET)一個(gè)文檔,web服務(wù)器在其文檔樹中搜索請求的文件(/sample.html)。這是由服務(wù)器機(jī)器上作為操作系統(tǒng)一部分的文件系統(tǒng)完成的。若文件能找到并可正常讀取,則服務(wù)器將把它返回給客戶。
如果成功:文件被發(fā)送出去。
首先,web服務(wù)器發(fā)送一個(gè)狀態(tài)碼及一些描述信息。既然文件已經(jīng)找到,則發(fā)送狀態(tài)碼200,表示一切都OK ,文檔隨后發(fā)出,因?yàn)榘l(fā)送的信息是HTML文檔,所以Content-type 取值為text/html。文檔長為1024個(gè)字節(jié),所以Content-type 取1024 。服務(wù)器軟件的標(biāo)識及文件的時(shí)間屬性信息也被包含在頭域中。
如果失?。悍祷劐e(cuò)誤指示。
如果請求的文件沒有找到或找到但無法讀取,測請求無法滿足。這時(shí)將返回不同于200的狀態(tài)碼。最常見的問題是請求中的文件名拼寫有誤,所以服務(wù)器無法找到該文件。這種情況下,服務(wù)器將發(fā)送一個(gè)狀態(tài)碼---404 給客戶。
(5)關(guān)閉文件和網(wǎng)絡(luò)連接,結(jié)束會(huì)話。
當(dāng)文件已被發(fā)郵或錯(cuò)誤已發(fā)出后,web服務(wù)器結(jié)束整個(gè)會(huì)話。它關(guān)閉打開的的被請求文件,關(guān)閉網(wǎng)絡(luò)端口從而結(jié)束網(wǎng)絡(luò)連接。有關(guān)的其它工作則是由客戶端來完成的,包括接收數(shù)據(jù),并以用戶可讀的方式呈現(xiàn)出來。這些與服務(wù)器無關(guān)。
apache架構(gòu)
Apache 作為歷史最悠久的web服務(wù)器,一直是web應(yīng)用系統(tǒng)的首選,是世界上被廣泛應(yīng)用的web 服務(wù)器軟件,它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的web服務(wù)器端軟件之一,也是流行架構(gòu)LAMP的重要組成部分。
Apache 特點(diǎn):
· 支持最新的HTTP/1.1通信協(xié)議。Apache是最先使用HTTP/1.1協(xié)議的Web服務(wù)器之一,它完全兼容HTTP/1.1協(xié)議并與HTTP/1.0協(xié)議向后兼容。Apache已為新協(xié)議所提供的全部內(nèi)容做好了必要的準(zhǔn)備。
· 支持多計(jì)算機(jī)平臺。Apache幾乎可以在所有的計(jì)算機(jī)操作系統(tǒng)上運(yùn)行,包括主流的UNIX、Linux及Windows操作系統(tǒng)。
· 配置文件簡單,易操作。用戶可以通過直接修改Apache的配置文件信息來修改Apache,操作起來十分方便。
· 支持實(shí)時(shí)監(jiān)視服務(wù)器狀態(tài)和定制服務(wù)器日志。Apache在記錄日志和監(jiān)視服務(wù)器自身運(yùn)行狀態(tài)方面提供了很大的靈活性,可以通過Web瀏覽器來監(jiān)視服務(wù)器的狀態(tài),也可以根據(jù)自己的需要來定制日志。
· 支持多種方式的HTTP認(rèn)證。
· 支持Web目錄修改。用戶可以使用特定的目錄作為Web目錄。
· 支持CGI腳本,如Perl、PHP等。
· 支持服務(wù)器端包含指令(SSI)。
· 支持安全Socket層(SSL)。
· 支持FastCGI。
· 支持虛擬主機(jī)。即通過在一臺服務(wù)器上使用不同的主機(jī)名來提供多個(gè)HTTP服務(wù)。Apache支持基于IP、主機(jī)名和端口號三種類型的虛擬主機(jī)服務(wù)。
· 跟蹤用戶會(huì)話。當(dāng)用戶瀏覽基于Apache的Web站點(diǎn)時(shí),可以通過Apache的mod_usertrack模塊對其進(jìn)行跟蹤。
· 支持動(dòng)態(tài)共享對象。Apache的模塊可在運(yùn)行時(shí)動(dòng)態(tài)加載,這就意味著這些模塊可以被裝入服務(wù)器進(jìn)程空間,從而減少系統(tǒng)的內(nèi)存開銷。
· 支持多進(jìn)程。當(dāng)負(fù)載增加時(shí),服務(wù)器會(huì)快速生成子進(jìn)程來處理,從而提高系統(tǒng)的響應(yīng)能力。
· 支持第三方軟件開發(fā)商提供的功能模塊。比如Apache加載mod_jserv模塊后可以支持Java Servlet,這樣就可以運(yùn)行Java應(yīng)用程序了。
· 支持多線程和多進(jìn)程混合模型的MPM。 當(dāng)MPM類型指定為worker時(shí),由于是使用線程來處理,所以可以處理海量的請求,而系統(tǒng)資源的開銷要小于基于進(jìn)程的服務(wù)器。
Apache 工作模擬
Apache 2.X 支持插入式并行處理模塊,稱為多路處理模塊(MPM)。在編譯apache時(shí)必須選擇也只能選擇一個(gè)MPM,對類UNIX系統(tǒng),有幾個(gè)不同的MPM可供選擇,它們會(huì)影響到apache的速度和可伸縮性。
Worker MPM : 使用多個(gè)子進(jìn)程,每個(gè)子進(jìn)程中又有多個(gè)線程。每個(gè)線程處理一個(gè)請求,該MPM通常對高流量的服務(wù)器是一個(gè)不錯(cuò)的選擇。因?yàn)樗萷refork MPM需要更少的內(nèi)存且更具有伸縮性。
Prefork MPM : 使用多個(gè)子進(jìn)程,但每個(gè)子進(jìn)程不包含多線程。每個(gè)進(jìn)程只處理一個(gè)連接。在許多系統(tǒng)上它的速度和worker MPM一樣快,但是需要更多的內(nèi)存。這種無線程的設(shè)計(jì)在某些性況下優(yōu)于worker MPM,因?yàn)樗稍趹?yīng)用于不具備線程安全的第三方模塊上(如 PHP3/4/5),且在不支持線程調(diào)試的平臺上易于調(diào)試,另外還具有比worker MPM更高的穩(wěn)定性。
艾銻無限科技專業(yè):
IT外包、
企業(yè)外包、
北京IT外包、
桌面運(yùn)維、弱電工程、
網(wǎng)站開發(fā)、wifi覆蓋方案,
網(wǎng)絡(luò)外包,網(wǎng)絡(luò)管理服務(wù),網(wǎng)管外包,
綜合布線,服務(wù)器運(yùn)維服務(wù),
中小企業(yè)it外包服務(wù),服務(wù)器維保公司,硬件運(yùn)維,網(wǎng)站運(yùn)維服務(wù)
以上文章由北京艾銻無限科技發(fā)展有限公司整理