apache的动态和静态编译区别
一、含义:
动态意味着不用此模块的时候就不需要Load进来,使用的时候需要显示的Load进来;静态意味着先把模块Load进来,想用的时候直接使用.
二、编译:
静态编译:
当只需要静态编译module的时候,语法应写成–enable-ssl或–enable-ssl=static。例如:
#./configure --prefix=/usr/local/apache2 --enable-ssl[=static]
查看哪些modules被静态编译进apache里:
#/usr/local/apache2/bin/httpd -l
Compiled in modules: core.c mod_ssl.c
2、动态编译:
当只需要动态编译module的时候,语法写成–enable-ssl=shared即可。
#./configure --prefix=/usr/local/apache2 --enable-ssl=shared
查看哪些modules被动态编译进apache里:
#ls -l /usr/local/apache2/modules/ -rw-r--r-- 1 root root 8504 Aug 25 14:49 httpd.exp -rwxr-xr-x 1 root root 806898 Aug 7 13:57 mod_ssl.so
3、静动混合:
当既需要动态又需要动态的时候,语法写成–enable-ssl=static[动态编译] –enable-rewrite=shared[静态编译]
#./configure --prefix=/usr/local/apache2 --enable-ssl=static --enable-rewite=shared
三、使用:
动态编译使用:
会生成相关的so文件,例如:
1)动态加载module,在配置文件里需要加上如下语句:
LoadModule access_module /usr/local/apache2/modules/mod_ssl.so
rewriteEngine on
例如要使用rewrite模块的时候在配置文件里加下这句就可以了:
RewriteEngine on