loading ...
loading...

2008-07-22 | 如何向已经安装好的apache添加一个模块

分享
以前一直有这样的需求,是说apache缺少我需要的模块,可是如何在不影响现有程序的基础上,直接添加一个loadModule呢,但是模块文件从哪里来?从另外一个系统复制一份过来是否可行?虽然只是一个 foo.so 文件,放到module文件夹就可以了,但我还是查了一下资料,找到合适的方法,并且尝试过了。

这个是原文

引用
apache 添加 mod_rewrite 模块

我使用的是httpd 2.0.55 注意配置httpd.conf 时 是 rewrite_module 而不是 mod_rewrite

1、Apache安装rewrite模块的时候需要DBM支持,否则无法编译。使用rpm -qa gdbm 查询,如果没有,需要先下载并安装gdbm:
下载地址:ftp://ftp.gnu.org/gnu/gdbm/

安装步骤:
./configure
make
make install
make install-compat (如果不执行此步,无法编译出ndbm.h头文件)

2、安装
#cd /root/src/httpd-2.0.55/modules/mappers
#/usr/local/apache/bin/apxs -c mod_rewrite.c
#gcc -shared -o mod_rewrite.so mod_rewrite.o -lgdbm
#/usr/local/apache/bin/apxs -i -A -n mod_rewrite mod_rewrite.so

/usr/local/apache/bin/ 是我正在使用的apahce的目录

3、配置httpd.conf
加入 LoadModule rewrite_module modules/mod_rewrite.so

注意是 rewrite_module 而不是 mod_rewrite


过程其实很容易理解:
1 在httpd的源文件里面找到 foo.c
2 运行程序编译出 foo.so
3 在httpd.conf添加进来

这里面要注意的两点:
1 foo.c是按功能放置在modules目录的,自己找到相应目录
2 loadModule命令默认是注释的,要去掉后还要改一下名称

下面是尝试expires功能的添加:

cd modules/metadata/
(expires属于metadata功能部分的)
/Data/apps/apache/bin/apxs -c mod_expires.c
gcc -shared -o mod_expires.so mod_expires.o -lgdbm
/Data/apps/apache/bin/apxs -i -A -n mod_expires mod_expires.so

编辑httpd.conf文件
LoadModule expires_module modules/mod_expires.so

然后测试一下:
引用

[root@localhost apache]# ./bin/apachectl -t
Syntax OK
[root@localhost apache]# ./bin/apachectl graceful


这个模块很实用,可以给你带来带宽的节省
比如如下配置:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 6 hours"
ExpiresByType text/html "access plus 0 hours"
</IfModule>


启用expires,默认缓存6小时,但不缓存 text/html
也就是访问阿权的网页
http://www.aslibra.com/blog/read.php?132 不会缓存网页
http://www.aslibra.com/blog/up/1158240093.jpg 缓存图片和脚本等

意思就是这样了
分享 分享 |  评论 (0) |  阅读 (?)  |  固定链接 |  发表于 17:03
搜狐博客温馨提示:搜狐博客官方不会要求参加活动的各位博友缴纳任何的手续费用。请勿轻信留言、评论中的中奖信息,更不要拨打陌生电话及向陌生帐户汇款,谨防受骗!识别更多网络骗术,请 点击查看详情
您还未登录,只能匿名发表评论。或者您可以 登录 后发表。
 
  *中国人爱国心,搜狗输入法爱国主题皮肤下载>>
表  情:
加载中...
回复通知: 同时用小纸条通知对方该回复