Apache源代碼全景分析第1卷

出版時(shí)間:2009年  出版社:電子工業(yè)出版社  作者:張中慶,梁雪平  頁(yè)數(shù):604  字?jǐn)?shù):850000  
Tag標(biāo)簽:無(wú)  

前言

  如果說(shuō)沒(méi)有Apache就沒(méi)有Intemet可能有些夸張,但至少可以說(shuō)沒(méi)有Apache,互聯(lián)網(wǎng)就不會(huì)發(fā)展得這么快。根據(jù)互聯(lián)網(wǎng)研究公司NetCraft的統(tǒng)計(jì),多年來(lái)Apache一直穩(wěn)居Web服務(wù)器市場(chǎng)的頭把交椅,至今仍占據(jù)超過(guò)50%的市場(chǎng)份額。就整個(gè)互聯(lián)網(wǎng)來(lái)說(shuō),Apache仍然是最重要的軟件之一?! ”M管近幾年來(lái)涌現(xiàn)出不少以“高性能”為賣點(diǎn)的新的Web服務(wù)器軟件,比如Lighttpd、Nginx等,吸引了不少用戶注意力,不過(guò)Apache因其功能廣泛,某些方面仍具有不可替代性,仍然是Web服務(wù)器技術(shù)領(lǐng)域的風(fēng)向標(biāo)。話說(shuō)回來(lái),“重劍無(wú)鋒,大巧不工”,有的時(shí)候軟件性能表現(xiàn)不佳,更多原因可能是用戶對(duì)其了解不夠、使用不當(dāng)造成的,并非軟件自身有多大缺陷。對(duì)Apache來(lái)說(shuō),更是如此。因此,通過(guò)分析源代碼了解Apache軟件架構(gòu)體系,熟知其本質(zhì),方能更有效地使用Apache Web服務(wù)器,使之發(fā)揮出最大效能。為網(wǎng)站節(jié)省資源,為企業(yè)節(jié)省資金,也能為用戶提供更好的訪問(wèn)體驗(yàn),好處多多?! 〈送?,隨著互聯(lián)網(wǎng)業(yè)務(wù)的復(fù)雜化,很多網(wǎng)站在使用Apache的過(guò)程中也遇到了新的挑戰(zhàn),如常常要在業(yè)務(wù)的驅(qū)動(dòng)下對(duì)Apache進(jìn)行擴(kuò)展性的開(kāi)發(fā)(例如擴(kuò)展日志模塊以便于更復(fù)雜的日志統(tǒng)計(jì))。這時(shí),源代碼分析是繞不過(guò)去的一件事兒,盡管源代碼獲取是輕而易舉之事,但Apache代碼畢竟凝聚了開(kāi)源軟件界的群體智慧,要想高效分析也并非易事,相信這本書(shū)能讓有此需求的讀者少走彎路,剝絲抽繭,獲得更多啟發(fā)與借鑒?! ≌f(shuō)起源代碼分析,其實(shí)幾年前市面上出現(xiàn)過(guò)一些有關(guān)此類話題的圖書(shū),但基本上是在大段源代碼加上幾句注釋了事,讀者可能會(huì)有吃到注水豬肉的感覺(jué)。而讀者對(duì)本書(shū)這一點(diǎn)大可放心,書(shū)中代碼只是點(diǎn)到即止,相對(duì)環(huán)保多了。

內(nèi)容概要

本書(shū)是“Apache源代碼全景分析”的第1卷。書(shū)中詳細(xì)介紹了Apache的基礎(chǔ)體系結(jié)構(gòu)和核心模塊的實(shí)現(xiàn)機(jī)制,包括配置文件、模塊化結(jié)構(gòu)、多任務(wù)并發(fā),以及網(wǎng)絡(luò)連接和請(qǐng)求讀取,其中多任務(wù)并發(fā)體系結(jié)構(gòu)是本書(shū)分析的重點(diǎn),討論了Prefork、Worker及WinNT三種MPM。本書(shū)還著重介紹了Apache 2.0新引入的過(guò)濾器,包括過(guò)濾器的使用、實(shí)現(xiàn),以及其中的數(shù)據(jù)組織形式——存儲(chǔ)段和存儲(chǔ)段組,剖析了Apache中常用的過(guò)濾器。  本書(shū)的目的是深入挖掘Apache運(yùn)行背后的實(shí)現(xiàn)機(jī)制和模塊開(kāi)發(fā)的細(xì)節(jié),適合Apache模塊開(kāi)發(fā)者、希望了解內(nèi)部細(xì)節(jié)的Apache管理員、Web服務(wù)器開(kāi)發(fā)者、大規(guī)模服務(wù)器開(kāi)發(fā)者學(xué)習(xí)和閱讀。

作者簡(jiǎn)介

張中慶,計(jì)算機(jī)軟件與理論碩士。擁有多年服務(wù)器端軟件開(kāi)發(fā)經(jīng)驗(yàn),關(guān)注大規(guī)模服務(wù)器設(shè)計(jì)技術(shù),致力于開(kāi)源技術(shù)的使用、分享和推廣,《UNIX/Linux下curses庫(kù)開(kāi)發(fā)指南》第一作者。

書(shū)籍目錄

第1章 Web服務(wù)器概述  1.1 WWW概述    1.1.1 Internet概述    1.1.2 超文本的概念    1.1.3 WWW的歷史  1.2 HTTP服務(wù)器    1.2.1  HTTP服務(wù)器簡(jiǎn)介    1.2.2  HTTP服務(wù)器功能    1.2.3  WWW文檔    1.2.4 工作方式  1.3 Apache功能    1.3.1 虛擬主機(jī)    1.3.2  內(nèi)容協(xié)商    1.3.3 持續(xù)連接    1.3.4 緩存    1.3.5 訪問(wèn)控制和安全    1.3.6 動(dòng)態(tài)內(nèi)容生成第2章  Apache體系結(jié)構(gòu)  2.1  Apache目錄  2.2 Apache層次結(jié)構(gòu)    2.2.1 操作系統(tǒng)支持層    2.2.2 可移植運(yùn)行庫(kù)層    2.2.3 核心功能層    2.2.4 可選功能層    2.2.5 第三方支持庫(kù)    2.2.6 Apache工具包  2.3 Apache核心功能層    2.3.1 核心與可選模塊的關(guān)系    2.3.2 核心組件  2.4 Apache運(yùn)行流程    2.4.1  Apache啟動(dòng)過(guò)程    2.4.2  HTTP連接處理    2.4.3 請(qǐng)求報(bào)文讀取    2.4.4 請(qǐng)求處理    2.4.5 內(nèi)容生成    2.4.6 關(guān)閉與重啟  2.5 主程序main    2.5.1 主程序概要    2.5.2 主程序細(xì)節(jié)第3章 配置文件管理  3.1 Apache配置系統(tǒng)  3.2 配置文件    3.2.1 配置文件類    3.2.2 配置文件處理時(shí)機(jī)  3.3 指令相關(guān)概念    3.3.1 指令概述    3.3.2 指令參數(shù)    3.3.3 指令上下文    3.3.4 指令參數(shù)類型  3.4 指令配置    3.4.1 指令結(jié)構(gòu)    3.4.2 指令定義    3.4.3 預(yù)定義指令函數(shù)    3.4.4 指令表  3.5 Apache配置處理    3.5.1  指令保存    3.5.2 指令讀取    3.5.3 配置指令處理    3.5.4 特殊指令  3.6 .htaccess處理    3.6.1  .htaccess使用場(chǎng)合    3.6.2 指令的覆蓋    3.6.3  處理.htaccess  3.7 實(shí)現(xiàn)自己的配置段第4章 Apache模塊化體系結(jié)構(gòu)  4.1 Apache模塊概述    4.1.1 Apache模塊組成    4.1.2 Apache核心與模塊交互  4.2 Apache模塊結(jié)構(gòu)  4.3 模塊的加載    4.3.1 模塊變量    4.3.2 DSO(Dynamic Shared Object,動(dòng)態(tài)共享對(duì)象)的概念    4.3.3 靜態(tài)模塊加載    4.3.4 動(dòng)態(tài)模塊加載    4.3.5 模塊卸載  4.4 指令表    4.4.1 指令表概述    4.4.2 指令處理函數(shù)    4.4.3 指令共享  4.5 掛鉤(HOOK)    4.5.1 為什么引入掛鉤    4.5.2  聲明掛鉤    4.5.3 掛鉤數(shù)組聲明(APR—HOOK—LINK)    4.5.4 掛鉤結(jié)構(gòu)(APR—HOOK—STRUCT)    4.5.5 掛鉤函數(shù)注冊(cè)(APR—IMPLEMENT—EXTERNAL—HOOK—BASE)    4.5.6 使用掛鉤    4.5.7 掛鉤排序    4.5.8 可選掛鉤    4.5.9 掛鉤縱覽    4.5.10 自己編寫(xiě)掛鉤  4.6 模塊與配置文件    4.6.1 概述    4.6.2 如何描述配置信息    4.6.3  目錄相關(guān)配置(Per—Directory Config)    4.6.4 服務(wù)器配置(Per-Server Config)  4.7 配置存儲(chǔ)和使用    4.7.1 配置向量    4.7.2 配置存儲(chǔ)體系結(jié)構(gòu)    4.7.3 虛擬主機(jī)配置存儲(chǔ)    4.7.4 目錄配置存儲(chǔ)    4.7.5 Location配置存儲(chǔ)    4.7.6 文件配置存儲(chǔ)    4.7.7 總體存儲(chǔ)示意  4.8 模塊通信    4.8.1 簡(jiǎn)單通信方式    4.8.2 可選函數(shù)    4.8.3 提供者API  4.9 常用模塊    4.9.1 緩存模塊    4.9.2 URL映射模塊    4.9.3  內(nèi)容生成模塊    4.9.4 安全模塊    4.9.5 代理模塊    4.9.6 其余模塊第5章 多任務(wù)并發(fā)處理  5.1 多進(jìn)程并發(fā)處理    5.1.1 概述    5.1.2 MPM在Apache中的位置  5.2 MPM數(shù)據(jù)結(jié)構(gòu)    5.2.1  記分板    5.2.2 終止管道(Pipe of Death)  5.3 Inetd:通用的多任務(wù)處理結(jié)構(gòu)    5.3.1 服務(wù)器程序概述    5.3.2 INETD  5.4 預(yù)創(chuàng)建(Prefork)MPM分析    5.4.1  Leader/Follow模式    5.4.2  Prefork MPM概述    5.4.3  Prefork MPM實(shí)現(xiàn)  5.5 工作者(Worker):MPM分析    5.5.1  Worker MPM概述    5.5.2  Worker主進(jìn)程    5.5.3 子進(jìn)程管理    5.5.4 線程管理    5.5.5 信號(hào)處理  5.6 WinNT MPM分析    5.6.1  WinNT MPM概述    5.6.2  完成端口相關(guān)概念    5.6.3  WinNT MPM主程序    5.6.4  監(jiān)控主進(jìn)程    5.6.5 工作進(jìn)程    5.6.6  線程處理第6章  網(wǎng)絡(luò)連接  6.1  網(wǎng)絡(luò)連接概述    6.1.1  網(wǎng)絡(luò)連接上下文環(huán)境    6.1.2 等待連接    6.1.3 接受連接    6.1.4 創(chuàng)建連接  6.2 連接數(shù)據(jù)結(jié)構(gòu)  6.3 等待連接    6.3.1 概述    6.3.2 套接字創(chuàng)建    6.3.3 套接字偵聽(tīng)  6.4 連接處理    6.4.1 連接處理概述    6.4.2 創(chuàng)建連接    6.4.3 連接處理  6.5 請(qǐng)求讀取    6.5.1 請(qǐng)求讀取概述    6.5.2  HTTP請(qǐng)求報(bào)文    6.5.3  request_rec結(jié)構(gòu)    6.5.4  請(qǐng)求讀取實(shí)現(xiàn)    6.5.5  請(qǐng)求行讀取    6.5.6 請(qǐng)求頭讀取    6.5.7 網(wǎng)絡(luò)IO讀寫(xiě)第7章 過(guò)濾器  7.1 過(guò)濾器概述  7.2 過(guò)濾器類型  7.3 過(guò)濾器結(jié)構(gòu)  7.4 過(guò)濾器協(xié)議  7.5 過(guò)濾器使用    7.5.1 靜態(tài)過(guò)濾器使用    7.5.2 動(dòng)態(tài)過(guò)濾器使用  7.6 過(guò)濾器操作    7.6.1 過(guò)濾器注冊(cè)概述    7.6.2 數(shù)據(jù)結(jié)構(gòu)描述    7.6.3 過(guò)濾器結(jié)點(diǎn)    7.6.4 過(guò)濾器注冊(cè)    7.6.5 過(guò)濾器的查找    7.6.6 添加過(guò)濾器至指定請(qǐng)求或連接    7.6.7 從連接中刪除過(guò)濾器    7.6.8 過(guò)濾器初始化  7.7 智能過(guò)濾器    7.7.1 何謂智能過(guò)濾器    7.7.2 智能過(guò)濾器的使用    7.7.3 智能過(guò)濾器的實(shí)現(xiàn)  7.8 過(guò)濾器函數(shù)    7.8.1 輸出過(guò)濾器    7.8.2 輸入過(guò)濾器第8章 存儲(chǔ)段和存儲(chǔ)段組  8.1 什么是存儲(chǔ)段和存儲(chǔ)段組    8.1.1 存儲(chǔ)段和存儲(chǔ)段組    8.1.2 為什么需要存儲(chǔ)段組  8.2 存儲(chǔ)段分配子    8.2.1 概述    8.2.2 分配子創(chuàng)建    8.2.3 存儲(chǔ)段內(nèi)存分配    8.2.4 存儲(chǔ)段內(nèi)存釋放  8.3 存儲(chǔ)段操作概述    8.3.1 存儲(chǔ)段接口    8.3.2 存儲(chǔ)段空接口  8.4 存儲(chǔ)段類型    8.4.1 堆存儲(chǔ)段(Heap Bucket)    8.4.2 內(nèi)存池存儲(chǔ)段(Pool Bucket)    8.4.3 文件存儲(chǔ)段(File Bucket)    8.4.4 MMAP存儲(chǔ)段(MMAP Bucket)    8.4.5 套接字存儲(chǔ)段(Socket Bucket)    8.4.6 管道存儲(chǔ)段(Pipe Bucket)    8.4.7 持久存儲(chǔ)段(Immortal Bucket)    8.4.8 臨時(shí)存儲(chǔ)段(Transient Bucket)    8.4.9 刷新存儲(chǔ)段(Flush Bucket)    8.4.10 流終止(EOS)存儲(chǔ)段    8.4.11  HTTP錯(cuò)誤存儲(chǔ)段  8.5 存儲(chǔ)段操作  8.6 存儲(chǔ)段組操作    8.6.1 創(chuàng)建存儲(chǔ)段組    8.6.2 存儲(chǔ)段組的銷毀    8.6.3 存儲(chǔ)段組的分裂    8.6.4 統(tǒng)計(jì)存儲(chǔ)段長(zhǎng)度    8.6.5 存儲(chǔ)段轉(zhuǎn)換    8.6.6 數(shù)據(jù)寫(xiě)入    8.6.7 ap_r函數(shù)寫(xiě)入  8.7 存儲(chǔ)段組和過(guò)濾器    8.7.1  存儲(chǔ)段組和過(guò)濾器的關(guān)系    8.7.2 獲取存儲(chǔ)段組    8.7.3 存儲(chǔ)段組傳遞第9章 常用過(guò)濾器  9.1 概述  9.2 輸入過(guò)濾器    9.2.1  CORE_IN輸入過(guò)濾器    9.2.2  HTTP_IN過(guò)濾器    9.2.3 創(chuàng)建自己的輸入過(guò)濾器  9.3 輸出過(guò)濾器    9.3.1 資源過(guò)濾器    9.3.2  內(nèi)容過(guò)濾器    9.3.3 協(xié)議過(guò)濾器    9.3.4 編碼轉(zhuǎn)換過(guò)濾器    9.3.5  網(wǎng)絡(luò)過(guò)濾器(CORE)    9.3.6 編寫(xiě)輸出過(guò)濾器索引

章節(jié)摘錄

  第1章 Web服務(wù)器概述  1.3 Apache功能  1.3.1 虛擬主機(jī)  虛擬主機(jī)(Virtual Host)是指在一個(gè)機(jī)器上運(yùn)行多個(gè)Web站點(diǎn)的機(jī)制?。ū热纾簑ww.companyl.com和www.company2.com)。虛擬主機(jī)的實(shí)現(xiàn)包括以下三種方式?! 。?)Web服務(wù)器中配備多個(gè)IP地址,并且每一個(gè)邏輯Web服務(wù)器使用一個(gè)IP地址。這種虛擬主機(jī)的實(shí)現(xiàn)技術(shù)被稱為“基于IP”,這是最簡(jiǎn)單的虛擬主機(jī)的實(shí)現(xiàn)機(jī)制,但是這種機(jī)制存在一些問(wèn)題,比如擴(kuò)展性的問(wèn)題。一臺(tái)機(jī)器所能存在的物理IP地址總是有限的,因此對(duì)于一個(gè)專門(mén)的ISP而言,如果要提供大量的虛擬主機(jī),則會(huì)存在相當(dāng)大的困難。另外一個(gè)存在的問(wèn)題就是IP地址的有限性,目前Web站點(diǎn)的數(shù)目遠(yuǎn)遠(yuǎn)超過(guò)IP地址的數(shù)目,因此,以IP地址區(qū)分虛擬主機(jī),則會(huì)使Web站點(diǎn)的發(fā)展受到限制。 ?。?)Web服務(wù)器只有一個(gè)IP地址,不同的Web服務(wù)器使用不同的端口進(jìn)行偵聽(tīng)。因此這種服務(wù)器的請(qǐng)求uRI中必須明確地給出端口,而不能使用默認(rèn)的Web端口80,比如http://127.0.0.1:8900。這種虛擬主機(jī)的實(shí)現(xiàn)技術(shù)可稱為“基于端口”。這種策略存在的問(wèn)題是用戶必須顯式給出請(qǐng)求的端口,這對(duì)大部分用戶來(lái)說(shuō)顯然是不太方便的。如果忘記輸入端口號(hào)或輸入一個(gè)錯(cuò)誤的端口號(hào),則會(huì)使用錯(cuò)誤的虛擬主機(jī)?! 。?)Web服務(wù)器只有一個(gè)IP地址,同時(shí)多個(gè)域名被映射到該IP地址上。所有的Web服務(wù)器偵聽(tīng)同一個(gè)端口。服務(wù)器通過(guò)HTTP請(qǐng)求頭中的HOST域?qū)φ?qǐng)求進(jìn)行區(qū)分。對(duì)于HTTP 1.1協(xié)議而言,該域是必須具備的,而低于HTTP 1.1的協(xié)議則未必如此。因此從這個(gè)意義上說(shuō),只有HTTP 1.1協(xié)議才可以支持這種基于“HOST域”的協(xié)議?! pache中支持上面三個(gè)方式的虛擬主機(jī),而且通過(guò)mod_vhost_alias模塊,可以使得類似的虛擬主機(jī)配置起來(lái)非常容易,減輕了管理員的負(fù)擔(dān)。

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    Apache源代碼全景分析第1卷 PDF格式下載


用戶評(píng)論 (總計(jì)5條)

 
 

  •   讀了幾天,整個(gè)apache的架構(gòu)比較多,但感覺(jué)到不足的是,第三卷好像沒(méi)出來(lái),
    書(shū)中有些是要參考第三卷的。
    書(shū)中的有些代碼細(xì)節(jié)還是少了些,比如有些技巧性代碼應(yīng)該介紹下為什么這么寫(xiě),
    等??傮w不錯(cuò)。。。
  •   書(shū)比較厚,還可以。性價(jià)比較高
  •   怎么說(shuō)呢,代碼分析這種書(shū),只適合做參考書(shū)看,當(dāng)分析代碼分析不下去的時(shí)候去查查,畢竟,看別人分析過(guò)的代碼就好像吃別人吃過(guò)的東西一樣,收獲不會(huì)多。所以建議是自己先看代碼,看到不懂的地方再查查書(shū)比較合適了。。
  •   剛開(kāi)始看,感覺(jué)還行
  •   買錯(cuò)了,想要了解apache配置的同學(xué)還是不要買這本書(shū)了,個(gè)人建議
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7