linux下apache的功能扩展

是一个模块化(或说积木式)的程序,管理员可以选择一些模块来增加服务器的某些功能。这些模块,可以在创建服务器程序时静态地编译到httpd服务器的二进制代码中,也可以编译成一些独立于服务器程序的Dynamic Shared Objects (DSOs)文件。DSO 文件可以在编译服务器程序时创建,也可以在以后利用Apache扩展工具apxs来单独创建。
  这篇文档,将描述如何使用DSO 模块,以及其背后的原理。
实现
  Apache HTTPD对DSO 的支持,即对单个模块的动态加载,是基于一个叫
mod_so
的模块来实现的,此时mod_so必须被静态地编译到HTTP服务器内核中。这是除了core以外唯一不能以dso方式编译的模块。实际操作时,其它的Apache模块可以在编译服务器程序时通过单独指定来将其编译为DSO文件,正如
安装文档
中讲述的,此时configure的设置参数应为--enable-xxxx=shared(xxxx为模块的名字,如rewrite等)。 当一个模块被编译为一个名为mod_foo.so的DSO文件后,就可以在httpd.conf文件中用mod_so的
LoadModule
命令,告诉服务器在启动或重新启动时将此模块加载。
  为了简化创建Apache模块(尤其是第三方模块)的DSO文件的过程,apache提供了一个新工具名叫apxs(APache eXtenSion)。它可以脱离apache的源码将模块编译成DSO文件。它的实现思路非常简单: 在安装Apache时,configure脚本的 make install 过程会安装Apache的C头文件,并在apxs程序(apxs是一个perl脚本)中对依赖于具体平台的编译器和连接器设置一些标志(Flag),以供创建DSO文件。通过这种方式,用户就可以利用apxs在没有Apache源码树且无需针对当前平台的编译器和连接器进行配置(以生成DSO格式目标文件)的情况下编译Apache模块了。
使用概要说明
  • 创建和安装一个 Apache发布的(distributed) 模块,比方说将mod_foo.c编译成mod_foo.so:
  • $ ./configure --prefix=/path/to/install --enable-foo=shared
    $ make install

  • 创建和安装一个第三方的Apache模块,比方说将mod_foo.c编译成mod_foo.so:
  • $ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c --enable-foo=shared
    $ make install

  • 为以后安装(非HTTPD编译时安装)模块配置Apache:
  • $ ./configure --enable-so
    $ make install
    (要编译全部Aapache模块,用./configure --enable-mods-shared=all --with-egd --with-devrandom --enable-so,但对experimental一类的模块,需要特别指定,如./configure --enable-mods-shared=all --with-egd --with-devrandom --enable-so --enable-cache=shared --enable-disk_cache=shared --enable-mem_cache=shared --enable-proxy=shared --enable-proxy_connect=shared --enable-proxy_ftp=shared --enable-proxy_http=shared --enable-file_cache=shared --enable-charset_lite=shared --enable-case_filter=shared --enable-case_filter_in=shared --enable-ssl=shared 。具体有哪些模块可以编译而没有打开编译开关,可在前面的那个configure运行的最后看看哪一个是no.)

  • 利用apxs在没有Apache源码树的情况下,创建和安装第三方的Apache模块:
  • $ cd /path/to/3rdparty
    $ apxs -c mod_foo.c
    $ apxs -i -a -n foo mod_foo.la

    你可能感兴趣的:(apache,C++,c,linux,C#)