成人在线你懂的-成人在线免费小视频-成人在线免费网站-成人在线免费视频观看-日韩精品国产一区二区-日韩精品国产一区

掃一掃
關(guān)注微信公眾號

初步學習了解Apache:基礎(chǔ)介紹和配置
2006-07-11   Linux中堅站

Apache介紹

(一)

一 序言

-------

我想linux愛好者沒有不知道Apache的. 作為一個linux的管理員更應該精通Apache的配制. 在這里我就我的理解描述一下Apache. 作為一個被廣泛使用的Web服務器, Apache將reliable擺在了第一位, performance只是第二位的東東. 這一理念我覺得很好. 當然, 它最好的地方是開放源碼, 這才使我們有機會深入了解世界上最流行的Web Server.

二 基本結(jié)構(gòu)介紹

---------------

Apache是由模塊組成, 其中http_core.c是最根本的, 一個最小的Apache編譯只包含這一個模塊. 你可以用"httpd -l" 可以列出Apache被編譯進了哪些模塊. 動態(tài)模塊是需要在配制文件中定義的. 在Redhat中, 只有"http_core.c"被編譯進去了, 其余的都被編譯成了so. 可以被Apache動態(tài)加載. Redhat中的Apache是比較特殊的, 標準的Apache只有一個配制文件httpd.conf, 其他的文件都是空的.

下面是在配制文件中裝載模塊的命令:

LoadModule digest_module modules/mod_digest.so

LoadModule proxy_module modules/libproxy.so

LoadModule php3_module modules/libphp3.so

... ...

ClearModuleList

AddModule mod_actions.c

AddModule mod_userdir.c

AddModule mod_alias.c

... ...

LoadModule是用于動態(tài)加載模塊的. ClearModuleList是刪除Apache中的模塊列表. AddModule是將模塊加入到列表中去. 上面命令是用于重新構(gòu)造模塊列表, 模塊在列表中的順序代表了其處理時的優(yōu)先級, 后面的優(yōu)先級高.

Apache將一個Clinet的請求按以下步驟處理:

1. URL -> Filename translation

2. Auth ID checking

3. Auth access checking

4. Access checking other than auth

5. Determining MIME type of the object requested

6. Fixups

7. Actually sending a response back to the client

8. Logging the request

Apache本身只負責內(nèi)存分配, IO, 進程管理和模塊管理等, 它通過調(diào)用模塊提供的接口函數(shù)完成配制命令的處理和用戶請求的實際處理. 其中的核心模塊http_core.c提供了最基本的命令, 每一個模塊通常都會有自己的配制命令. 模塊可以參與上述的八個步驟. 每一個模塊提供一個struct module, 其中定義了大量的函數(shù)指針和結(jié)構(gòu)指針, 通過struct module告訴Apache該模塊所支持的命令和參與的步驟.

struct module中定義了改模塊的名字, 這是通過宏來完成的, 其名字就是__FILE__. 所以在文件mod_foo.c中定義的模塊名字就叫mod_foo.c.

Apache內(nèi)部維護了一個鏈表(頭指針為top_module). 最初時只有一個

http_core.c. 每一條命令LoadModule, AddModule. 都會在表頭加一項. 而在每一步, Apache都會按照鏈表中的順序來依次調(diào)用每個模塊提供的函數(shù). 而在許多步, Apache碰到第一個返回OK的即結(jié)束. 因此, 表中的順序( 這也就是所謂的優(yōu)先級了 )可以對系統(tǒng)有很大影響.

下面看一下上面說過的八個步驟:

1. URL -> Filename translation

將URL轉(zhuǎn)換為本地的文件名, 例如: mod_alias.c會在這一步處理alais

2. Auth ID checking

3. Auth access checking

4. Access checking other than auth

進行認證處理

5. Determining MIME type of the object requested

決定被請求對象的MIME類型

6. Fixups

不知道(誰知道請告訴我)

7. Actually sending a response back to the client

將應答發(fā)送給客戶

8. Logging the request

寫log

認證的部分會在后面講. 我們看一看最后幾步. Apache繼承了通過擴展名來判斷MIME類型的方法. AddType用來加入新的一些擴展名:

AddType application/x-httpd-php3 .php3

AddType application/x-tar .tgz

這兩條指令定義了后綴為php3和tgz的文件的MIME類型. 這里用的都是標準的MIME類型, 所謂的決定MIME類型其實還包括了另一種情況: 模塊會用一些字符串來描述一個請求, Apache根據(jù)這一字符串來選擇一個相應的模塊來處理該請求. 這些字符串都是內(nèi)部自定義的. 細節(jié)會在下面描述.

AddHandler cgi-script .cgi

AddHandler server-parsed .shtml

Sethandler cgi-script

AddHandler定義了何種擴展名用那一個字符串進行描述.

SetHandler將一個目錄下的文件都指定用這一個字符串描述.

我在這里提到的命令都是與其結(jié)構(gòu)密切相關(guān)的. Handler和Type的關(guān)系在下面會描述的. 許多的東東從外面是看不清楚的, 下面, 我們從里面看.

三 程序的基本結(jié)構(gòu)

-----------------

Apache有非常好的跨平臺性. 為了實現(xiàn)這一目標和簡化模塊編寫者的負擔,Apache完成了許多基本的功能如IO, 內(nèi)存分配等, 這些接口都是與具體平臺無關(guān)的. 還有一些很有用的例程如: hash table, array 等. 在整個體系中, Apache有一個基本點, 它盡可能的使用簡單的結(jié)構(gòu)和算法, 這不僅易于理解和維護, 還提高了它的穩(wěn)定性.

在UNIX系統(tǒng)上, Apache采用了多進程模型, 在Window上采用了多線程模型.多進程模型中, 其子進程處理客戶請求, 父進程用于管理子進程. 當系統(tǒng)過載時父進程會再啟動幾個子進程, 當系統(tǒng)空閑時, 父進程會殺掉幾個子進程. 子進程的數(shù)目在"MinSpareServers"和"MaxSpareServers"之間. 而且, 每個子進程處理的請求個數(shù)也是有限制的, 這可以解決諸如內(nèi)存泄漏等問題. 所有的進程狀態(tài)都被記錄在share memory中. 由于每個進程的狀態(tài)記錄在其中的一小塊內(nèi)存上, 它通常也只讀寫這一塊內(nèi)存, 因此, Apache沒有使用什么同步機制.

在Richard Steve的書上說到的幾種多進程服務器模型, Apache都使用了,在不同的系統(tǒng)上根據(jù)其特點選擇使用不同的方法:

1. accept :

在accept處阻塞, 只有在accept是在內(nèi)核級實現(xiàn)的才行.

2. select :

在select處阻塞.

3. mutex/lock_file :

使用mutex或lock_file來進行對accpet進行互斥.

三種方法都要求進行阻塞, 區(qū)別在于阻塞與不同的地方. 前兩種方法都會由所謂的巨群問題: 多個阻塞在同一個資源上的進程被同時喚醒引發(fā)再次競爭. 不過, 按Richard Steve 的評測, 第一種方法最快, 第二種其次, 第三種最慢. 其實, 在linux上第三種方法也會有巨群問題.

Apache雖然并不強調(diào)性能, 這并不意味著他們不重視性能. 而是Apache認為在Server端realiable才是第一位的. 但Apache的性能還是不錯的.

熱詞搜索:

上一篇:RedHat Linux常見的日志文件和常用命令
下一篇:教你在Redhat 上搭建 Apache 服務器

分享到: 收藏
主站蜘蛛池模板: 抖音下载安装| 红海行动2蛟龙行动电影在线观看| 蒙台梭利教师资格证官网| 激情电影| 异灵| 电影电车| 远方的故乡简谱| 美女游泳| 刀光剑影| 八月照相馆| 大奉打更人电视剧在线播放视频| 常宝霆| 红海行动2在线观看| 罗马之春| 凤凰卫视资讯台直播| doors2怪物图鉴| 我们结婚吧 电视剧| 秀人网门户网免费| 孽债电视剧演员表| 地下车库设计规范| 青春派电视剧免费完整版在线观看| xiee| 姐妹姐妹演员全部演员表| 实用咒语大全| 陈建斌电影| 张凤妮| 卡五星怎么算账| 电影《追求》| 三年电影| 自拍在线观看| 在线播放www| 好像也没那么热血沸腾电影免费观看 | 张国立电影作品大全| 不留痕迹| 舞蹈生踩胯魔鬼训练视频| 密桃在线视频| 搜狐视频安装| 同性恋免费观看| 男同视频在线| 我的老婆又大肚| 小数加减法评课|