出版時間:2008-3 出版社:電子工業(yè)出版社 作者:丘 頁數(shù):558 字數(shù):661000 譯者:張立強,徐建明
Tag標簽:無
內(nèi)容概要
本書由ApacheDBD框架的主架構(gòu)師Nick Kew編寫,是Apache模塊開發(fā)的指南。本書詳細介紹了Apache的架構(gòu)和模塊,并對Apache的發(fā)展歷史、平臺和架構(gòu)、MPM、APR、編程技巧和規(guī)范、模塊的配置、模塊的擴展、模塊的調(diào)試等方面進行了介紹,包括大量的示例代碼,均以C語言進行描述。 本書適用于使用Apache web服務(wù)器的軟件開發(fā)人員閱讀使用。
作者簡介
NICK KEW是Apache應(yīng)用程序的主要開發(fā)者,你可以在他的主頁(apache.webthing.corn)中找到這些應(yīng)用程序。他是ADache網(wǎng)絡(luò)服務(wù)器內(nèi)核開發(fā)團隊和Apache軟件基金會的成員,活躍在用戶和開發(fā)者中間,并為他們提供支持。他還在相關(guān)的會議(如ApacheCon)上教授和展示Apache應(yīng)用程序,創(chuàng)建并維護著www.a(chǎn)pachetutor.org,同時在很多主流網(wǎng)站上撰寫關(guān)于Apache的文章。
書籍目錄
第1章 使用Apache進行應(yīng)用程序開發(fā) 1.1 Apache Web服務(wù)器簡史 1.1.1 Apache 1 1.1.2 Apache 2 1.2 Apache軟件基金會 1.2.1 功績組織模式(Meritocracy) 1.2.2 角色 1.2.3 哲學理念 1.3 Apache開發(fā)流程 1.3.1 Apache代碼倉庫 1.3.2 開發(fā)者論壇 1.3.3 開發(fā)人員 1.3.4 參與Apache工作 1.4 Apache和知識產(chǎn)權(quán) 1.4.1 Apache許可證 1.4.2 第三方知識產(chǎn)權(quán) 1.5 進一步閱讀資料 1.5.1 交互式在線論壇 1.5.2 會議 1.5.3 網(wǎng)站 1.6 小結(jié) 第2章 Apache平臺和架構(gòu) 2.1 縱覽 2.2 Apache運行的兩個階段 2.2.1 啟動階段 2.2.2 運行階段 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可移植運行時庫 3.1 APR 3.2 APR實用庫 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 時間和日期 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 進程和線程 3.5.11 資源池 3.5.12 API擴展 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 跨平臺編程的問題 4.6.1 示例:創(chuàng)建一個臨時文件 4.7 跨MPM編程問題 4.7.1 進程和全局鎖 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 庫的最佳實踐 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對象 5.2 請求、響應(yīng)和環(huán)境 5.2.1 I/O模塊 5.2.2 讀取表單數(shù)據(jù) 5.3 默認的處理器 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 錯誤文檔 6.3.2 處理格式錯誤的請求和惡意請求 6.4 采集信息:子請求 6.4.1 示例 6.5 開發(fā)模塊 6.5.1 選擇文檔中不同的變量 6.5.2 錯誤處理和復用性 6.6 小結(jié) 第7章 AAA:訪問、認證和授權(quán) 7.1 安全 7.1.1 認證:安全的層次 7.1.2 登錄Web 7.2 AAA的概覽 7.3 Apache1.x和2.0中的AAA 7.4 Apache2.1/2.2中的AAA 7.4.1 基于主機的訪問控制 7.4.2 認證:check_user_id 7.4.3 密碼查詢(password lookup) 7.4.4 授權(quán) 7.5 AAA邏輯 7.5.1 認證和Require指令 7.5.2 拒絕訪問 7.5.3 認證方法 7.6 編寫AAA模塊 7.6.1 一個基本認證提供者 7.6.2 一個授權(quán)函數(shù) 7.6.3 配置 7.6.4 基本認證提供者和摘要認證提供者 7.7 實現(xiàn)一個定制的登錄機制 7.7.1 使用SQL進行會話管理 7.7.2 在沒有瀏覽器認證對話框時進行認證 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和對象 8.4.1 輸出過濾器 8.4.2 輸入過濾器 8.5 過濾器對象 8.6 過濾器輸入/輸出 8.7 巧妙的Apache 2.2過濾機制 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 復雜解析 8.10 使用現(xià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 實現(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章 擴展API 10.1 在Apache中實現(xiàn)新的函數(shù) 10.1.1 導出函數(shù) 10.1.2 可選函數(shù) 10.2 鉤子與可選鉤子 10.2.1 進一步研究鉤子程序 10.2.2 執(zhí)行順序 10.2.3 可選鉤子示例:mod_authz_dbd 10.3 提供者API 10.3.1 實現(xiàn) 10.3.2 實現(xiàn)提供者 10.4 以服務(wù)方式提供API擴展 10.4.1 例子:mod_dbd 10.4.2 實現(xiàn)reslist 10.5 跨平臺API構(gòu)建 10.5.1 使用預(yù)處理指令 10.5.2 聲明模塊API 10.6 小結(jié) 第11章 Apache數(shù)據(jù)庫框架 11.1 對新框架的需求 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 一個示例應(yīng)用模塊:mod_authn_dbd 11.6 開發(fā)一個新的DBD驅(qū)動 11.6.1 apr_dbd_internal.h頭文件 11.6.2 輸出驅(qū)動 11.6.3 驅(qū)動函數(shù) 11.7 小結(jié) 第12章 模塊調(diào)試 12.1 調(diào)試日志 12.1.1 錯誤日志 12.1.2 調(diào)試 12.2 在調(diào)試器中運行Apache 12.2.1 服務(wù)器的啟動和調(diào)試 12.2.2 調(diào)試和多道處理模塊MPM 12.2.3 追蹤沖突 12.2.4 調(diào)試核心Dump 12.3 特殊用途的Hook和模塊 12.3.1 標準模塊 12.3.2 重大異常模塊 12.3.3 處理反常運行的模塊 12.4 過濾器調(diào)試 12.4.1 mod_diagnostics 12.5 小結(jié) 附錄A Apache許可證 附錄B 貢獻者許可證協(xié)議 附錄C 超文本傳送協(xié)議:HTTP/1.1 本備忘錄狀態(tài) 摘要 1 概述 1.1 目的 1.2 要求 1.3 術(shù)語 1.4 操作概述 2 符號慣例和一般語法 2.1 擴充BNF 2.2 基本規(guī)則 3 協(xié)議參數(shù) 3.1 HTTP版本 3.2 統(tǒng)一資源標識符 3.3 日期/時間格式 3.4 字符集 3.5 內(nèi)容編碼 3.6 傳送編碼 3.7 媒體類型 3.8 產(chǎn)品記號 3.9 質(zhì)量值 3.10 語言標簽 3.11 實體標簽 3.12 范圍單位 4 HTTP消息 4.1 消息類型 4.2 消息報頭 4.3 消息主體 4.4 消息長度 4.5 通用報頭字段 5 請求 5.1 請求行(Request-Line) 5.2 請求所標識的資源 5.3 請求報頭字段 6 應(yīng)答 6.1 狀態(tài)行 6.2 應(yīng)答報頭字段 7 實體 7.1 實體報頭字段 7.2 實體主體 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 用于報告的1xx 10.2 成功的2xx 10.3 重定向的3xx 10.4 客戶端錯誤的4xx 10.5 服務(wù)器錯誤的5xx 11 訪問認證 12 內(nèi)容協(xié)商 12.1 服務(wù)器驅(qū)動協(xié)商 12.2 代理驅(qū)動協(xié)商 12.3 透明協(xié)商 13 HTTP中的緩存 13.1 HTTP中緩存的基本設(shè)計理念 13.2 過期模型 13.3 驗證模型 13.4 應(yīng)答緩存能力 13.5 從緩存構(gòu)造應(yīng)答 13.6 緩存協(xié)商的應(yīng)答 13.7 共享和非共享緩存 13.8 錯誤和不完全應(yīng)答緩存行為 13.9 GET和HEAD的副作用 13.10 刷新或刪除后的無效性 13.11 強制寫通過 13.12 緩存替換 13.13 歷史列表 14 報頭字段定義 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(實體標簽) 14.20 Expect(期望) 14.21 Expire(過期) 14.22 From(來自于) 14.23 Host(主機) 14.24 If-Match(如果匹配) 14.25 If-Modified-Since(如果自從……被改變) 14.26 If-None-Match(如果沒有一個匹配) 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(代理認證) 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(升級) 14.43 User-Agent(用戶代理) 14.44 Vary(驗證) 14.45 Via(路由) 14.46 Warning(警告) 14.47 WWW-Authenticate(WWW-認證) 15 安全考慮 15.1 個人信息 15.2 基于文件和路徑名稱的攻擊 15.3 DNS欺騙 15.4 Location報頭和欺騙 15.5 Content-Disposition問題 15.6 認證證書和空閑的客戶端 15.7 代理服務(wù)器和緩存 16 致謝 17 參考文獻 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實體和RFC 2045實體之間的區(qū)別 19.5 附加特性 19.6 和以前版本的兼容 20 索引 21 全部版權(quán)聲明 致謝 索引
章節(jié)摘錄
第1章 使用Apache進行應(yīng)用程序開發(fā) : 1.2 Apache軟件基金會: Apache軟件基金會(ASF)為一系列應(yīng)用范圍廣泛的開源軟件項目提供組織上、法律上和財政上的支持。Apache軟件基金會建立了一整套框架來管理知識產(chǎn)權(quán)和財政捐獻,同時,限制捐獻者潛在的、合法的資源泄漏。通過精誠合作的項目開發(fā)流程,Apache項目交付了企業(yè)級的、免費獲取的軟件產(chǎn)品,吸引大量的社區(qū)用戶使用。注重實效的Apache許可證(Apache License)使得無論是商業(yè)用戶還是個人用戶都易于部署Apache的產(chǎn)品?! pache軟件基金會的前身是Apache組織(Apache Group)。Apache軟件基金會是一個非盈利的組織,基于成員制,以保證Apache項目在個人志愿者參與之外能夠繼續(xù)存在。如果個人承諾與開源軟件開發(fā)項目合作,并不斷地參與和貢獻Apache軟件基金會的項目,那么他(她)就有資格成為Apache軟件基金會的成員。通過Apache基金會現(xiàn)有大部分成員的贊同和任命,個人才能成為軟件基金會的成員。因此,Apache軟件基金會為它所直接服務(wù)的社區(qū)所掌控,成員都為社區(qū)內(nèi)的項目進行協(xié)作。 Apache軟件基金會的成員按照基金會的規(guī)章制度,每隔一段時間選舉一個董事會,管理基金會的組織事務(wù),由董事會任命成員監(jiān)管基金會的日常事務(wù)。社區(qū)畝以公開獲取Apache基金會運作的記錄。……
編輯推薦
Apache不僅是世界上最流行的服務(wù)器,同時也是一個非常強大的可擴展的開發(fā)平臺?,F(xiàn)在ApacheTutor.org的Nick Kew撰寫了《The Apache Modules Book》,本書從頭到尾都以豐富的實例來指導每一個想要充分利用Apache的開發(fā)者。 Kew首先深入淺出地詳細描述了Apache構(gòu)架和它的API,然后講述了你需要的所有技術(shù)——從需求處理到代碼安全。PerI和PHP之類的高級語言能提高軟件開發(fā)的效率,而有些開發(fā)任務(wù)必須依靠基于C的技術(shù)來完成,Kew完美地結(jié)合了C語言和高級語言的優(yōu)點。利用本書中的代碼樣例,Kew還介紹了在其他書中甚至在其他任何地方也沒有記錄過的技術(shù)。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載