Apache原始碼全景分析:體系結構與核心模組(Apache原始碼全景分析第1卷)

Apache原始碼全景分析:體系結構與核心模組

Apache原始碼全景分析第1卷一般指本詞條

《Apache原始碼全景分析:體系結構與核心模組》是由張中慶、梁雪平等編著的計算機套用技術類書籍;該書由電子工業出版社於2009年出版發行。

書中詳細介紹了Apache的基礎體系結構和核心模組的實現機制,包括配置檔案、模組化結構、多任務並發,以及網路連線和請求讀取等知識。

基本介紹

  • 書名:Apache原始碼全景分析:體系結構與核心模組
  • 作者張中慶、梁雪平
  • ISBN:9787121084744
  • 頁數:604 頁
  • 定價:88.00
  • 出版社電子工業出版社
  • 出版時間:2009年
  • 裝幀:平裝
  • 開本:16
內容簡介,作者簡介,編輯推薦,目錄,前言,

內容簡介

《Apache原始碼全景分析第1卷:體系結構與核心模組》是“Apache原始碼全景分析”的第1卷。書中詳細介紹了Apache的基礎體系結構和核心模組的實現機制,包括配置檔案、模組化結構、多任務並發,以及網路連線和請求讀取,其中多任務並發體系結構是《Apache原始碼全景分析第1卷:體系結構與核心模組》分析的重點,討論了Prefork、Worker及WinNT三種MPM。《Apache原始碼全景分析第1卷:體系結構與核心模組》還著重介紹了Apache 2.0新引入的過濾器,包括過濾器的使用、實現,以及其中的數據組織形式——存儲段和存儲段組,剖析了Apache中常用的過濾器。《Apache原始碼全景分析第1卷:體系結構與核心模組》的目的是深入挖掘Apache運行背後的實現機制和模組開發的細節,適合Apache模組開發者、希望了解內部細節的Apache管理員、Web伺服器開發者、大規模伺服器開發者學習和閱讀。

作者簡介

張中慶,計算機軟體與理論碩士。擁有多年伺服器端軟體開發經驗,關注大規模伺服器設計技術,致力於開源技術的使用、分享和推廣,《UNIX/Linux下curses庫開發指南》第一作者。
粱雪平,計算機套用碩士,深圳職業技術學院講師,校優秀教師。研究方向為資料庫挖掘相關理論,致力於開源技術在高校的使用和推廣。

編輯推薦

《Apache原始碼全景分析第1卷:體系結構與核心模組》:國內市面上少有的全面介紹Apache體系結構與核心模組的專業圖書。剝絲抽繭——剖析Apache系統架構與核心模組,大巧不工——重新認識開源社區集體智慧的結晶。

目錄

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

前言

如果說沒有Apache就沒有Intemet可能有些誇張,但至少可以說沒有Apache,網際網路就不會發展得這么快。根據網際網路研究公司NetCraft的統計,多年來Apache一直穩居Web伺服器市場的頭把交椅,至今仍占據超過50%的市場份額。就整個網際網路來說,Apache仍然是最重要的軟體之一。
儘管近幾年來湧現出不少以“高性能”為賣點的新的Web伺服器軟體,比如Lighttpd、Nginx等,吸引了不少用戶注意力,不過Apache因其功能廣泛,某些方面仍具有不可替代性,仍然是Web伺服器技術領域的風向標。話說回來,“重劍無鋒,大巧不工”,有的時候軟體性能表現不佳,更多原因可能是用戶對其了解不夠、使用不當造成的,並非軟體自身有多大缺陷。對Apache來說,更是如此。因此,通過分析原始碼了解Apache軟體架構體系,熟知其本質,方能更有效地使用Apache Web伺服器,使之發揮出最大效能。為網站節省資源,為企業節省資金,也能為用戶提供更好的訪問體驗,好處多多。
此外,隨著網際網路業務的複雜化,很多網站在使用Apache的過程中也遇到了新的挑戰,如常常要在業務的驅動下對Apache進行擴展性的開發(例如擴展日誌模組以便於更複雜的日誌統計)。這時,原始碼分析是繞不過去的一件事兒,儘管原始碼獲取是輕而易舉之事,但Apache代碼畢竟凝聚了開源軟體界的群體智慧,要想高效分析也並非易事,相信這本書能讓有此需求的讀者少走彎路,剝絲抽繭,獲得更多啟發與借鑑。
說起原始碼分析,其實幾年前市面上出現過一些有關此類話題的圖書,但基本上是在大段原始碼加上幾句注釋了事,讀者可能會有吃到注水豬肉的感覺。而讀者對本書這一點大可放心,書中代碼只是點到即止,相對環保多了。

相關詞條

熱門詞條

聯絡我們