linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > linux网络与应用 > Linux服务器 >
栏目导栏
资料搜索
热门文章
·Linux网关设置
·WebLogic管理精华
·Webmin的下载与安装
·RedHat Linux 9.0 Samba配置详
·网吧LINUX游戏服务器加迅闪更新
·Linux下配置完整安全的DHCP服务
·Tomcat性能调整
·Linux下FTP服务器配置
·怎样设置域名的DNS服务器
·linux9.0+apache+php+mysql安装
·Eclipse+Tomcat+MyEclipse配置
·Linux服务器网卡驱动安装及故障
·Linux网络服务器配置详解
·FC5+Apache2+PHP5+MYSQL5环境配
·让linux系统支持ASP
最新文章
·Slackware EyooLinux服务器配置
·Linux系统下安装bind后配置实现
·Fedora Linux系统Samba服务器架
·服务器维护:RHEL 5系统下故障
·服务器应用:实现Linux与宿主机
·RED HAT AS4 U4下Gssftp服务的
·高手进阶:Redhat Linux上vsft
·Fedora Linux操作系统中TFTP的
·Ubuntu Linux操作系统安装配置
·Linux FTP服务器和SVN服务器的
·Linux操作系统下自带BIND的使用
·Linux系统下DNS服务器的架设
·Linux下Apache安装/增加mod_re
·虚拟磁盘Linux服务端测试及故障
·为网络启动和软硬件升级建立TF
Google
 
在Apache HTTPD中使用DSO
[ 作者:  加入时间:2007-12-06 18:10:10  来自:Linux联盟收集整理 ]
Apache HTTP 服务器是一个模块化(或说积木式)的程序,管理员可以选择一些模块来增加服务器的某些功能。这些模块,可以在创建服务器程序时静态地编译到httpd服务器的二进制代码中,也可以编译成一些独立于服务器程序的Dynamic Shared Objects (DSOs)文件。DSO 文件可以在编译服务器程序时创建,也可以在以后利用Apache扩展工具apxs来单独创建。DAALinux联盟
  这篇文档,将描述如何使用DSO 模块,以及其背后的原理。

实现

DAALinux联盟
  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模块了。DAALinux联盟

使用概要说明

DAALinux联盟
  1. 创建和安装一个 Apache发布的(distributed) 模块,比方说将mod_foo.c编译成mod_foo.so:
    DAALinux联盟
    $ ./configure --prefix=/path/to/install --enable-foo=sharedDAALinux联盟
    $ make installDAALinux联盟
    DAALinux联盟
  2. 创建和安装一个第三方的Apache模块,比方说将mod_foo.c编译成mod_foo.so:DAALinux联盟
    DAALinux联盟
    $ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c --enable-foo=sharedDAALinux联盟
    $ make installDAALinux联盟
    DAALinux联盟
  3. 为以后安装(非HTTPD编译时安装)模块配置Apache:DAALinux联盟
    DAALinux联盟
    $ ./configure --enable-soDAALinux联盟
    $ make installDAALinux联盟
    (要编译全部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.)DAALinux联盟
  4. 利用apxs在没有Apache源码树的情况下,创建和安装第三方的Apache模块:DAALinux联盟
    DAALinux联盟
    $ cd /path/to/3rdpartyDAALinux联盟
    $ apxs -c mod_foo.cDAALinux联盟
    $ apxs -i -a -n foo mod_foo.laDAALinux联盟
DAALinux联盟
在所有的情况下,当一个模块编译完成后,必须在httpd.conf使用LoadModule命令在告诉 Apache激活这个模块. Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·Perl语言进行Socket编程  (2007-10-09 13:10:37)
 ·把PHP安装为Apache DSO  (2007-05-21 20:08:07)
 ·用LIDS增强Linux操作系统安全详解  (2006-11-22 11:13:41)
 ·用Perl语言进行Socket编程  (2006-10-14 12:22:43)