来源:自学PHP网 时间:2014-10-14 00:06 作者: 阅读:次
[导读] ...
apache介绍 一 序言 ------- 我想linux爱好者没有不知道Apache的. 作为一个linux的管理员更应该精通Apache的配制. 在这里我就我的理解描述一下Apache. 作为一个被广泛使用的Web服务器, Apache将reliable摆在了第一位, performance只是第二位的东东. 这一理念我觉得很好. 当然, 它最好的地方是开放源码, 这才使我们有机会深入了解世界上最流行的Web Server.
二 基础结构介绍 --------------- Apache是由模块组成, 其中http_core.c是最根本的, 一个最小的Apache编译只包含这一个模块. 你可以用"httpd -l" 可以列出Apache被编译进了哪些模块. 动态模块是需要在配制文件中定义的. 在Redhat中, 只有"http_core.c"被编译进去了, 其余的都被编译成了so. 可以被Apache动态加载. 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是用于动态加载模块的. ClearModuleList是删除Apache中的模块列表. AddModule是将模块加入到列表中去. 上面命令是用于重新构造模块列表, 模块在列表中的顺序代表了其处理时的优先级, 后面的优先级高.
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. Fixuphotoshop/ target=_blank class=infotextkey>ps 7. Actually sending a response back to the client 8. Logging the request
Apache本身只负责内存分配, IO, 进程管理和模块管理等, 它通过调用模块提供的接口函数完成配制命令的处理和用户请求的实际处理. 其中的核心模块http_core.c提供了最基础的命令, 每一个模块通常都会有自己的配制命令. 模块可以参与上述的八个步骤. 每一个模块提供一个struct module, 其中定义了大量的函数指针和结构指针, 通过struct module告诉Apache该模块所支持的命令和参与的步骤.
struct module中定义了改模块的名字, 这是通过宏来完成的, 其名字就是__FILE__. 所以在文件mod_foo.c中定义的模块名字就叫mod_foo.c.
Apache内部维护了一个链表(头指针为top_module). 最初时只有一个 http_core.c. 每一条命令LoadModule, AddModule. 都会在表头加一项. 而在每一步, Apache都会按照链表中的顺序来依次调用每个模块提供的函数. 而在许多步, Apache碰到第一个返回OK的即结束. 因此, 表中的顺序( 这也就是所谓的优先级了 )可以对系统有很大影响.
下面看一下上面说过的八个步骤:
1. URL -> Filename translation 将URL转换为本地的文件名, 例如: mod_alias.c会在这一步处理alais "初步学习了解Apache:基础介绍和配置"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Server/Apache/18037.html |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com