出版時(shí)間:2008-3 出版社:電子工業(yè)出版社 作者:丘 頁數(shù):558 字?jǐn)?shù):661000 譯者:張立強(qiáng),徐建明
Tag標(biāo)簽:無
內(nèi)容概要
本書由ApacheDBD框架的主架構(gòu)師Nick Kew編寫,是Apache模塊開發(fā)的指南。本書詳細(xì)介紹了Apache的架構(gòu)和模塊,并對(duì)Apache的發(fā)展歷史、平臺(tái)和架構(gòu)、MPM、APR、編程技巧和規(guī)范、模塊的配置、模塊的擴(kuò)展、模塊的調(diào)試等方面進(jìn)行了介紹,包括大量的示例代碼,均以C語言進(jìn)行描述。 本書適用于使用Apache web服務(wù)器的軟件開發(fā)人員閱讀使用。
作者簡介
NICK KEW是Apache應(yīng)用程序的主要開發(fā)者,你可以在他的主頁(apache.webthing.corn)中找到這些應(yīng)用程序。他是ADache網(wǎng)絡(luò)服務(wù)器內(nèi)核開發(fā)團(tuán)隊(duì)和Apache軟件基金會(huì)的成員,活躍在用戶和開發(fā)者中間,并為他們提供支持。他還在相關(guān)的會(huì)議(如ApacheCon)上教授和展示Apache應(yīng)用程序,創(chuàng)建并維護(hù)著www.a(chǎn)pachetutor.org,同時(shí)在很多主流網(wǎng)站上撰寫關(guān)于Apache的文章。
書籍目錄
第1章 使用Apache進(jìn)行應(yīng)用程序開發(fā) 1.1 Apache Web服務(wù)器簡史 1.1.1 Apache 1 1.1.2 Apache 2 1.2 Apache軟件基金會(huì) 1.2.1 功績組織模式(Meritocracy) 1.2.2 角色 1.2.3 哲學(xué)理念 1.3 Apache開發(fā)流程 1.3.1 Apache代碼倉庫 1.3.2 開發(fā)者論壇 1.3.3 開發(fā)人員 1.3.4 參與Apache工作 1.4 Apache和知識(shí)產(chǎn)權(quán) 1.4.1 Apache許可證 1.4.2 第三方知識(shí)產(chǎn)權(quán) 1.5 進(jìn)一步閱讀資料 1.5.1 交互式在線論壇 1.5.2 會(huì)議 1.5.3 網(wǎng)站 1.6 小結(jié) 第2章 Apache平臺(tái)和架構(gòu) 2.1 縱覽 2.2 Apache運(yùn)行的兩個(gè)階段 2.2.1 啟動(dòng)階段 2.2.2 運(yùn)行階段 2.2.3 停止階段 2.3 多處理模塊MPM 2.3.1 為什么需要MPM 2.3.2 UNIX類的MPM模塊 2.3.3 MPM模塊和操作系統(tǒng) 2.4 基本概念和數(shù)據(jù)結(jié)構(gòu) 2.4.1 request_rec 2.4.2 server_rec 2.4.3 conn_rec 2.4.4 process_rec 2.5 其他的關(guān)鍵API組件 2.6 Apache配置基礎(chǔ) 2.7 Apache的請求處理 2.7.1 內(nèi)容生成 2.7.2 請求處理階段 2.7.3 處理鉤子 2.7.4 數(shù)據(jù)軸和過濾器 2.7.5 處理的順序 2.7.6 處理鉤子 2.8 小結(jié) 第3章 Apache可移植運(yùn)行時(shí)庫 3.1 APR 3.2 APR實(shí)用庫 3.3 基本的約定 3.3.1 參考手冊:API文檔和Doxygen 3.3.2 命名空間 3.3.3 聲明的宏 3.3.4 apr_status_t和返回值 3.3.5 條件編譯 3.4 資源管理:APR池 3.4.1 資源管理的問題 3.4.2 APR池 3.4.3 資源的生命周期 3.4.4 池的局限性 3.5 精選的APR主題 3.5.1 字符串和格式 3.5.2 國際化 3.5.3 時(shí)間和日期 3.5.4 數(shù)據(jù)結(jié)構(gòu) 3.5.5 Bucket和Brigade 3.5.6 文件系統(tǒng) 3.5.7 網(wǎng)絡(luò) 3.5.8 編碼和密碼 3.5.9 URI處理 3.5.10 進(jìn)程和線程 3.5.11 資源池 3.5.12 API擴(kuò)展 3.6 APR/Apache中的數(shù)據(jù)庫 3.6.1 DMB和apr_dbm模塊 3.6.2 SQL數(shù)據(jù)庫和apr_dbd 3.7 小結(jié) 第4章 編程技巧和忠告 4.1 Apache編程約定 4.1.1 代碼行 4.1.2 函數(shù) 4.1.3 代碼塊 4.1.4 流控制 4.1.5 聲明 4.1.6 注釋 4.2 管理模塊數(shù)據(jù) 4.2.1 配置向量 4.2.2 生命周期域 4.3 模塊之間的通訊 4.4 線程安全的編程問題 4.5 管理持久數(shù)據(jù) 4.5.1 線程安全 4.5.2 內(nèi)存/資源管理 4.6 跨平臺(tái)編程的問題 4.6.1 示例:創(chuàng)建一個(gè)臨時(shí)文件 4.7 跨MPM編程問題 4.7.1 進(jìn)程和全局鎖 4.7.2 內(nèi)存共享 4.8 安全編程問題 4.8.1 預(yù)防性原則:不要相信任何事情 4.8.2 拒絕服務(wù)攻擊:限制破壞 4.8.3 采用操作系統(tǒng)來幫助你 4.9 外部的依賴和庫 4.9.1 第三方的庫 4.9.2 庫的最佳實(shí)踐 4.9.3 使用庫構(gòu)建模塊 4.10 使用其他語言編寫和編譯模塊 4.11 小結(jié) 第5章 開發(fā)內(nèi)容生成器 5.1 HelloWorld模塊 5.1.1 模塊構(gòu)架 5.1.2 返回值 5.1.3 處理器的字段 5.1.4 完整的模塊 5.1.5 使用request_rec對(duì)象 5.2 請求、響應(yīng)和環(huán)境 5.2.1 I/O模塊 5.2.2 讀取表單數(shù)據(jù) 5.3 默認(rèn)的處理器 5.4 小結(jié) 第6章 請求處理周期和元數(shù)據(jù)處理器 6.1 HTTP超文本傳輸協(xié)議 6.1.1 HTTP協(xié)議 6.1.2 解構(gòu)HTTP請求 6.2 Apache的請求處理過程 6.2.1 映射至文件系統(tǒng) 6.2.2 內(nèi)容協(xié)商 6.2.3 安全性 6.2.4 操作緩存 6.2.5 私有元數(shù)據(jù) 6.2.6 記錄日志 6.3 轉(zhuǎn)移請求:內(nèi)部重定向 6.3.1 錯(cuò)誤文檔 6.3.2 處理格式錯(cuò)誤的請求和惡意請求 6.4 采集信息:子請求 6.4.1 示例 6.5 開發(fā)模塊 6.5.1 選擇文檔中不同的變量 6.5.2 錯(cuò)誤處理和復(fù)用性 6.6 小結(jié) 第7章 AAA:訪問、認(rèn)證和授權(quán) 7.1 安全 7.1.1 認(rèn)證:安全的層次 7.1.2 登錄Web 7.2 AAA的概覽 7.3 Apache1.x和2.0中的AAA 7.4 Apache2.1/2.2中的AAA 7.4.1 基于主機(jī)的訪問控制 7.4.2 認(rèn)證:check_user_id 7.4.3 密碼查詢(password lookup) 7.4.4 授權(quán) 7.5 AAA邏輯 7.5.1 認(rèn)證和Require指令 7.5.2 拒絕訪問 7.5.3 認(rèn)證方法 7.6 編寫AAA模塊 7.6.1 一個(gè)基本認(rèn)證提供者 7.6.2 一個(gè)授權(quán)函數(shù) 7.6.3 配置 7.6.4 基本認(rèn)證提供者和摘要認(rèn)證提供者 7.7 實(shí)現(xiàn)一個(gè)定制的登錄機(jī)制 7.7.1 使用SQL進(jìn)行會(huì)話管理 7.7.2 在沒有瀏覽器認(rèn)證對(duì)話框時(shí)進(jìn)行認(rèn)證 7.8 小結(jié) 第8章 過濾模塊 8.1 輸入過濾器和輸出過濾器 8.2 內(nèi)容過濾器、協(xié)議過濾器和連接過濾器 8.3 剖析過濾器 8.3.1 回調(diào)函數(shù) 8.3.2 流水線 8.4 過濾器API和對(duì)象 8.4.1 輸出過濾器 8.4.2 輸入過濾器 8.5 過濾器對(duì)象 8.6 過濾器輸入/輸出 8.7 巧妙的Apache 2.2過濾機(jī)制 8.7.1 預(yù)處理和后處理 8.7.2 mod_filter 8.7.3 過濾器的自配置 8.7.4 協(xié)議處理 8.8 示例:通過直接操作Bucket來過濾文本 8.8.1 Bucket函數(shù) 8.8.2 過濾器 8.9 復(fù)雜解析 8.10 使用現(xiàn)有的解析器進(jìn)行過濾 8.11 類似stdio的過濾器輸入/輸出 8.12 輸入過濾器和Pull API 8.12.1 模式 8.12.2 阻塞(Block) 8.12.3 readbytes 8.12.4 輸入過濾器示例 8.13 小結(jié) 第9章 模塊配置 9.1 配置基礎(chǔ) 9.2 配置數(shù)據(jù)結(jié)構(gòu) 9.3 管理模塊配置 9.3.1 模塊配置 9.3.2 服務(wù)器配置和目錄配置 9.4 實(shí)現(xiàn)配置指令 9.4.1 配置函數(shù) 9.4.2 示例 9.4.3 配置函數(shù)中的用戶數(shù)據(jù) 9.4.4 封裝配置函數(shù) 9.4.5 配置的作用域 9.4.6 配置函數(shù)類型 9.5 配置層次結(jié)構(gòu) 9.6 配置函數(shù)中的上下文 9.6.1 上下文檢查 9.6.2 方法和 9.7 定制配置容器 9.8 可選的配置方法 9.9 小結(jié) 第10章 擴(kuò)展API 10.1 在Apache中實(shí)現(xiàn)新的函數(shù) 10.1.1 導(dǎo)出函數(shù) 10.1.2 可選函數(shù) 10.2 鉤子與可選鉤子 10.2.1 進(jìn)一步研究鉤子程序 10.2.2 執(zhí)行順序 10.2.3 可選鉤子示例:mod_authz_dbd 10.3 提供者API 10.3.1 實(shí)現(xiàn) 10.3.2 實(shí)現(xiàn)提供者 10.4 以服務(wù)方式提供API擴(kuò)展 10.4.1 例子:mod_dbd 10.4.2 實(shí)現(xiàn)reslist 10.5 跨平臺(tái)API構(gòu)建 10.5.1 使用預(yù)處理指令 10.5.2 聲明模塊API 10.6 小結(jié) 第11章 Apache數(shù)據(jù)庫框架 11.1 對(duì)新框架的需求 11.1.1 Apache 1.x/2.0和Apache 2.2 11.1.2 連接池 11.2 DBD架構(gòu) 11.3 apr_dbd API 11.3.1 數(shù)據(jù)庫操作 11.3.2 API函數(shù) 11.4 使用ap_dbd API 11.5 一個(gè)示例應(yīng)用模塊:mod_authn_dbd 11.6 開發(fā)一個(gè)新的DBD驅(qū)動(dòng) 11.6.1 apr_dbd_internal.h頭文件 11.6.2 輸出驅(qū)動(dòng) 11.6.3 驅(qū)動(dòng)函數(shù) 11.7 小結(jié) 第12章 模塊調(diào)試 12.1 調(diào)試日志 12.1.1 錯(cuò)誤日志 12.1.2 調(diào)試 12.2 在調(diào)試器中運(yùn)行Apache 12.2.1 服務(wù)器的啟動(dòng)和調(diào)試 12.2.2 調(diào)試和多道處理模塊MPM 12.2.3 追蹤沖突 12.2.4 調(diào)試核心Dump 12.3 特殊用途的Hook和模塊 12.3.1 標(biāo)準(zhǔn)模塊 12.3.2 重大異常模塊 12.3.3 處理反常運(yùn)行的模塊 12.4 過濾器調(diào)試 12.4.1 mod_diagnostics 12.5 小結(jié) 附錄A Apache許可證 附錄B 貢獻(xiàn)者許可證協(xié)議 附錄C 超文本傳送協(xié)議:HTTP/1.1 本備忘錄狀態(tài) 摘要 1 概述 1.1 目的 1.2 要求 1.3 術(shù)語 1.4 操作概述 2 符號(hào)慣例和一般語法 2.1 擴(kuò)充BNF 2.2 基本規(guī)則 3 協(xié)議參數(shù) 3.1 HTTP版本 3.2 統(tǒng)一資源標(biāo)識(shí)符 3.3 日期/時(shí)間格式 3.4 字符集 3.5 內(nèi)容編碼 3.6 傳送編碼 3.7 媒體類型 3.8 產(chǎn)品記號(hào) 3.9 質(zhì)量值 3.10 語言標(biāo)簽 3.11 實(shí)體標(biāo)簽 3.12 范圍單位 4 HTTP消息 4.1 消息類型 4.2 消息報(bào)頭 4.3 消息主體 4.4 消息長度 4.5 通用報(bào)頭字段 5 請求 5.1 請求行(Request-Line) 5.2 請求所標(biāo)識(shí)的資源 5.3 請求報(bào)頭字段 6 應(yīng)答 6.1 狀態(tài)行 6.2 應(yīng)答報(bào)頭字段 7 實(shí)體 7.1 實(shí)體報(bào)頭字段 7.2 實(shí)體主體 8 連接 8.1 持久連接 8.2 消息傳送需求 9 方法定義 9.1 安全和冪等的方法 9.2 OPTIONS 9.3 GET 9.4 HEAD 9.5 POST 9.6 PUT 9.7 DELETE 9.8 TRACE 9.9 CONNECT 10 狀態(tài)碼定義 10.1 用于報(bào)告的1xx 10.2 成功的2xx 10.3 重定向的3xx 10.4 客戶端錯(cuò)誤的4xx 10.5 服務(wù)器錯(cuò)誤的5xx 11 訪問認(rèn)證 12 內(nèi)容協(xié)商 12.1 服務(wù)器驅(qū)動(dòng)協(xié)商 12.2 代理驅(qū)動(dòng)協(xié)商 12.3 透明協(xié)商 13 HTTP中的緩存 13.1 HTTP中緩存的基本設(shè)計(jì)理念 13.2 過期模型 13.3 驗(yàn)證模型 13.4 應(yīng)答緩存能力 13.5 從緩存構(gòu)造應(yīng)答 13.6 緩存協(xié)商的應(yīng)答 13.7 共享和非共享緩存 13.8 錯(cuò)誤和不完全應(yīng)答緩存行為 13.9 GET和HEAD的副作用 13.10 刷新或刪除后的無效性 13.11 強(qiáng)制寫通過 13.12 緩存替換 13.13 歷史列表 14 報(bào)頭字段定義 14.1 Accept(接受) 14.2 Accept-Charset(接受字符集) 14.3 Accept-Encoding(接受編碼) 14.4 Accept-Language(接受語言) 14.5 Accept-Range(接受范圍) 14.6 Age(年齡) 14.7 Allow(允許) 14.8 Authorization(授權(quán)) 14.9 Cache-control(緩存控制) 14.10 Connection(連接) 14.11 Content-Encoding(內(nèi)容編碼) 14.12 Content-Language(內(nèi)容語言) 14.13 Content-Length(內(nèi)容長度) 14.14 Content-Location(內(nèi)容位置) 14.15 Content-MD5(內(nèi)容的MD5值) 14.16 Content-Range(內(nèi)容范圍) 14.17 Content-Type(內(nèi)容類型) 14.18 Date(日期) 14.19 ETag(實(shí)體標(biāo)簽) 14.20 Expect(期望) 14.21 Expire(過期) 14.22 From(來自于) 14.23 Host(主機(jī)) 14.24 If-Match(如果匹配) 14.25 If-Modified-Since(如果自從……被改變) 14.26 If-None-Match(如果沒有一個(gè)匹配) 14.27 If-Range(如果有范圍) 14.28 If-Unmodified-Since(如果自從……未修改) 14.29 Last-Modified(最后一次修改) 14.30 Location(位置) 14.31 Max-Forwards(最大化向前傳送) 14.32 Pragma(特殊指令) 14.33 Proxy-Authenticate(代理認(rèn)證) 14.34 Proxy-Authorization(代理授權(quán)) 14.35 Range(范圍) 14.36 Referer(參考者) 14.37 Retry-After(稍后重試) 14.38 Server(服務(wù)器) 14.39 TE(傳送編碼) 14.40 Trailer(跟蹤器) 14.41 Transfer-Encoding(傳送編碼) 14.42 Upgrade(升級(jí)) 14.43 User-Agent(用戶代理) 14.44 Vary(驗(yàn)證) 14.45 Via(路由) 14.46 Warning(警告) 14.47 WWW-Authenticate(WWW-認(rèn)證) 15 安全考慮 15.1 個(gè)人信息 15.2 基于文件和路徑名稱的攻擊 15.3 DNS欺騙 15.4 Location報(bào)頭和欺騙 15.5 Content-Disposition問題 15.6 認(rèn)證證書和空閑的客戶端 15.7 代理服務(wù)器和緩存 16 致謝 17 參考文獻(xiàn) 18 作者地址 19 附錄 19.1 互聯(lián)網(wǎng)媒體類型message/http和application/http 19.2 互聯(lián)網(wǎng)媒體類型multipart/byteranges 19.3 可容忍的應(yīng)用程序 19.4 HTTP實(shí)體和RFC 2045實(shí)體之間的區(qū)別 19.5 附加特性 19.6 和以前版本的兼容 20 索引 21 全部版權(quán)聲明 致謝 索引
章節(jié)摘錄
第1章 使用Apache進(jìn)行應(yīng)用程序開發(fā) : 1.2 Apache軟件基金會(huì): Apache軟件基金會(huì)(ASF)為一系列應(yīng)用范圍廣泛的開源軟件項(xiàng)目提供組織上、法律上和財(cái)政上的支持。Apache軟件基金會(huì)建立了一整套框架來管理知識(shí)產(chǎn)權(quán)和財(cái)政捐獻(xiàn),同時(shí),限制捐獻(xiàn)者潛在的、合法的資源泄漏。通過精誠合作的項(xiàng)目開發(fā)流程,Apache項(xiàng)目交付了企業(yè)級(jí)的、免費(fèi)獲取的軟件產(chǎn)品,吸引大量的社區(qū)用戶使用。注重實(shí)效的Apache許可證(Apache License)使得無論是商業(yè)用戶還是個(gè)人用戶都易于部署Apache的產(chǎn)品?! pache軟件基金會(huì)的前身是Apache組織(Apache Group)。Apache軟件基金會(huì)是一個(gè)非盈利的組織,基于成員制,以保證Apache項(xiàng)目在個(gè)人志愿者參與之外能夠繼續(xù)存在。如果個(gè)人承諾與開源軟件開發(fā)項(xiàng)目合作,并不斷地參與和貢獻(xiàn)Apache軟件基金會(huì)的項(xiàng)目,那么他(她)就有資格成為Apache軟件基金會(huì)的成員。通過Apache基金會(huì)現(xiàn)有大部分成員的贊同和任命,個(gè)人才能成為軟件基金會(huì)的成員。因此,Apache軟件基金會(huì)為它所直接服務(wù)的社區(qū)所掌控,成員都為社區(qū)內(nèi)的項(xiàng)目進(jìn)行協(xié)作?! pache軟件基金會(huì)的成員按照基金會(huì)的規(guī)章制度,每隔一段時(shí)間選舉一個(gè)董事會(huì),管理基金會(huì)的組織事務(wù),由董事會(huì)任命成員監(jiān)管基金會(huì)的日常事務(wù)。社區(qū)畝以公開獲取Apache基金會(huì)運(yùn)作的記錄。……
編輯推薦
Apache不僅是世界上最流行的服務(wù)器,同時(shí)也是一個(gè)非常強(qiáng)大的可擴(kuò)展的開發(fā)平臺(tái)?,F(xiàn)在ApacheTutor.org的Nick Kew撰寫了《The Apache Modules Book》,本書從頭到尾都以豐富的實(shí)例來指導(dǎo)每一個(gè)想要充分利用Apache的開發(fā)者。 Kew首先深入淺出地詳細(xì)描述了Apache構(gòu)架和它的API,然后講述了你需要的所有技術(shù)——從需求處理到代碼安全。PerI和PHP之類的高級(jí)語言能提高軟件開發(fā)的效率,而有些開發(fā)任務(wù)必須依靠基于C的技術(shù)來完成,Kew完美地結(jié)合了C語言和高級(jí)語言的優(yōu)點(diǎn)。利用本書中的代碼樣例,Kew還介紹了在其他書中甚至在其他任何地方也沒有記錄過的技術(shù)。
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載