透过模块扩展你的服务器
模块初阶
利用模块提升 Apache 功能的过程十分简单。一开始,先下载你要使用的模块。为了要示范如何安装及使用模块,在这里笔者写了一个简单的模块,这个模块会使得服务器在每次接到来自使用者的网页请求时,会响应 "Hello World"。
以下的说明假设当初你在安装 Apache 时,有编译并安装过mod_so 这个模块,如果当初你这样做,那么以后你将新的模块加到 Apache 时,就不用再重新编译了。要看看你当初是否安装过 mod_so,执行 /httpd -l然后看看有没有 mod_so。如果没有,那你要阅读一下Dynamic Shared Object 支持手册,然后重新设定你的服务器,好把 mod_so 包括进来。
要执行我的 Hello World 模块,你必须先下载 mod_hello_world.c 档案。这个 .c 档是我们透过 apxs 用来编译出 .so 档的,你可以把它储存在任何地方。然后你要执行以下指令
apxs -c -o mod_babble.so mod_babble.c
如此一来 mod_hello_world 就已经编译好,准备在你的服务器中使用,而 mod_hello_world.so 也在这个时候产生;将这个档案拷贝到你的 Apache 安装目录的 libexec 子目录下。到现在,我们就已经完成一半的工作了。接下来我们要更改在 conf 子目录下的 httpd.conf 檔。打开 httpd.conf 然后搜寻有着 LoadModule 字样的那几行。在这些行所在的 section 的最尾端,新增以下这一行文字
LoadModule hello_world_module libexec/mod_hello_world.so
如果你在 http.conf 中有 ClearModuleList,那么在这个档里面一定有一个 AddModule 的 section 存在。(如果你没能找到 ClearModuleList,你就可以跳过这一步。)在 AddModule section 的尾端,加入该行文字
AddModule mod_hello_world.c
最后,在 AddModule section 之后的任何地方,加入以下几行:
<Location /hello>
SetHandler hello_world
</Location>
这是跟 Apache 说,对任何 "/hello" 网页的请求,都要交由 hello_world 模块来处理。
现在,重新激活你的网页服务器,然后打入以下 URL 的请求 http://localhost/hello。现在,你应该可以在你的浏览器上看到 "Hello World!"。