Apache服务器安装第三方模块
在了解了Apache的基本结构以后,我们可以试着来安装自己的模块。安装第三方模块,首先想到的是我们在编译Apache时使用configuration命令配置过Apache的安装模式,该命令有一个参数enable-share=module,可以使用这个方法来把模块编译进Apache。这是一种很常用的方法。但是,Apache还提供了另外一种方沾,那是使用它的一个应用程序apxs来完成对第三方模块的装载。这种方法的好处是我们可以不需要重新安装Apache服务(使用configuration则必须重新编译Apache)。
为了能更加清楚地理解apxs的原来,我们来介绍一下DSO(动态共享对象)。前面章节中我们讲了DSO是安装Apache模块的一种链接方式,它主要是为了能使模块在Apache运行时装入而设计的。另外还有一种连接方式是静态链接方式,对于这种方式,一般是针对比较稳定、常用的模块来安装的,这些模块般小会被修改。下面我们列举一下选择这两种方式的区别所在.如表所示。
LoadModule和 AddModule
LoadModulet顾名思义是装载模块的指令。Apache服务器在肩动时将查找httpd.conf文件中的LoadModule指令,并将该指令所指的模块装载进来,但这还仅仅表示该模块是可以使用的,但并没有真正在使用。只有当用AddModule指令执行陵模块时,该模块才真正装入内存并使用。LoadModule仅仅作用于用DSO方式装载的模块,对于静态装载的模块它并不起作用。而AddModule指令是针对所有模块的,即不管是静态还是动态模块都要使用AddModuie,所以除了静态模块,AddModule和LoadModule指令应该成对使用。AddMadule的使用是有顺序的。如果几个模块同时处理同一件事,那么Apache将根据AddModule装载的先后顺序处理,先载入的将先处理。因此,不同的装载顺序可能会导致不同的处理结果,所以建议不要任意改动它们的顺序。
注意:
除非你非常熟悉Apache,否则建议在使用AddModule指令时仅仅将它的注释符去掉或加上可以了。记住,我们在查看服务器所装载的模块时可以使用诸如http-1等命令来查看。事实上.Apache服务器有两个模块是始终需要静态加载的,一个是core模块,另一个是mod_so模捷。core显然是需要静态加我的,而mod_so是用来芰持DSO的,只有有了它,我们才能动态地加载模块,所以它也必须是静态加载的。