码迷,mamicode.com
首页 > Web开发 > 详细

Apache静态编译与动态编译的区别

时间:2016-04-02 07:11:04      阅读:309      评论:0      收藏:0      [点我收藏+]

标签:apache 静态编译 动态编译 enable-modules enable-mods-shared

Apache拥有4层结构,从核心到外层的module。而外层的module可以用通过静态和动态两种方式与Apache共同工作。这也就引入下文的“动态”和“静态”两种编译安装方式。

静态编译:

编译的时候,所有的模块自己编译进  httpd  这个文件中,启动Apache的时候这些模块就已经加载进来了,只要在  <ifmodule></ifmodule>中来配置就可以了。

动态编译:

编译的时候,使用--enable-mods-shared=MODULE-LIST来动态编译。编译完成后在modules/下有.so文件,对应在httpd.conf文件的LoadModule位置,如果要使用某模块,则启用此LoadModule,然后再<ifmodule></ifmodule>配置,这个模块才有效。

官方说静态的比动态的在性能方面多5%左右。相对来说,静态的效率高些,而动态方式配置方面灵活。

httpd2.4.4为例,./configure --help里显示了如下3种方式:

--enable-modules=MODULE-LIST

--enable-mods-shared=MODULE-LIST

--enable-mods-static=MODULE-LIST

后面可以跟"all", "most","few", "reallyall". 3种方式是对所有或大多数的模块进程编译,单个模块的编译以其他方式呈现。经过测试,--enable-modules--enable-mods-shared效果一致,都是动态编译,而--enable-mods-static是静态编译。如果要明确指定对某模块的编译方式,模块名后面要跟staticshared指出。模块名以./configure--help的输出为准。如大多数模块要使用动态编译,而cgi模块要静态编译,则

./configure --enable-mods-shared=all--enable-cgi=static --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util

如果指定了大多数模块的编译方式,且指定了单个模块,但没有指定单个模块的编译方式,则单个模块的编译方式和大多数模块的编译方式相同。

也可以禁用某模块进行编译,以--disable开头。

httpd -D DUMP_MODULES: 查看已经加载的所有静态和动态模块。

apachectl-l: 查看已经加载的所有静态模块。


Apache静态编译与动态编译的区别

标签:apache 静态编译 动态编译 enable-modules enable-mods-shared

原文地址:http://1991018.blog.51cto.com/1981018/1759423

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!