1. 首页
  2. 系统运维
  3. Linux

不重新编译apache安装mod_deflate模块

如果需要对网页进行gzip压缩,首先需要打开httpd.conf文件中LoadModule deflate_module modules/mod_deflate.so类似的配置。但是如果编译时没有加–enable-deflate,这个配置是不存在的。那么接下来你可以选择重新编译,或者看下博主接下来的介绍。

apxs:apxs是一个为Apache超文本传输协议(HTTP)服务器编译安装扩展模块的工具, 用于编译一个或多个源程序或目标代码文件为动态共享对象, 使之可以用mod_so中的LoadModule指令 在运行时刻加载到Apache服务器中。

找到源码目录下的mod_deflate.c文件,一般是在这里“源码目录/modules/filters/mod_deflate.c”。进入这个目录“源码目录/modules/filters/”。运行下面类似的命令:

/usr/local/apache2/bin/apxs -i -c -a mod_deflate.c

注:apxs目录请参照您自己的机器,通常在apache安装目录的bin目录下。

安装完成后会在apache安装目录中的modules下生成mod_deflates.so文件,httpd.conf中也会增加“LoadModule deflate_module modules/mod_deflate.so”一行配置。如果提示错误,一般时服务器没有安装zlib,ubuntu用户可以选择安装zlibc、zlib1g、zlib1g-dev。

接下来不要忙着重启,首先测试下是否正确。

/usr/local/apache2/bin/httpd -t

如果出现如下提示,那么恭喜你,模块安装成功。

root@ubuntu:~/httpd-2.2.26/modules/filters# /usr/local/apache2/bin/httpd -t
httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
Syntax OK

如果出现如下提示,那么在接着往下看。

httpd: Syntax error on line 107 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_deflate.so into server: /usr/local/apache2/modules/mod_deflate.so: undefined symbol: inflate

出现这个错误其实时因为mod_deflate模块没有找到zlib库。解决办法就是找到apr-config文件中的LDFLAGS=””,把他改成LDFLAGS=”-lz”,然后在运行/usr/local/apache2/bin/apxs -i -c -a mod_deflate.c一般就可以了。

运行完可以通过如下命令验证,正常时mod_deflate.so是会加载libz.so的。

这里博主(blog.nbhao.org)建议一开始编译时还是加上-enable-deflate,免得以后麻烦。希望这篇文章你有帮助。

root@ubuntu:~/httpd-2.2.26/modules/filters# ldd /usr/local/apache2/modules/mod_deflate.so
linux-vdso.so.1 => (0x00007fffa13ff000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fe40028e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe3ffece000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe4006b3000)

参考文章:http://grepanswers.blogspot.com/2008/11/how-to-add-moddeflate-to-apache-without.html

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code