如何在CentOS 7上安装和配置mod_deflate

介绍

Mod_deflate是一个Apache模块,它允许在发送到客户端之前压缩Web服务器的输出。一旦您的网站内容的大小被压缩,其大小就会变小,客户端可以更快地下载它。这不仅对于带宽较低的客户有价值,而且在评估您的网站性能和网页排名时也会被搜索引擎考虑在内。

除压缩内容外,mod_deflate还可用于解压缩。如果您使用Apache作为反向代理并且希望进一步处理通过代理的内容,则此技术将适用。然而,该技术的使用非常有限。我们将继续关注使用mod_deflate进行压缩的文章。

准备

本指南已在CentOS 7上测试过。模块安装和配置不依赖于操作系统或操作系统版本,但配置文件的位置可能因操作系统及其版本而异。

它还假设您运行的是Apache 2.4.0或更高版本。要安装Apache,请按照文章中CentOS yum安装Apache + PHP + Tomcat7 + MySQL的相关步骤进行操作。

本教程中的所有命令都应以非root用户身份运行。如果命令需要root访问权限,则前面会有sudo。如果您还没有服务器,可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

安装

在CentOS 7上的默认Apache安装中包含并启用了Mod_deflate。确认这需要运行apachectl,请运行Apache服务器控制接口,并使用grepdeflate关键字过滤输出:

apachectl -t -D DUMP_MODULES |grep deflate

您应该看看deflate_module (shared)是否已安装并启用了mod_deflate。如果您没有看到这个,请按照以下问题排查步骤操作:

  1. 确保已安装模块文件。此文件是核心软件包httpd的一部分,根据前面提到的准备条件,您应该已经安装了该文件。默认情况下,它位于/etc/httpd/modules/mod_deflate.so。此外,Web服务器应该能够打开此文件。为此,mod_deflate.so应具有世界可读权限,例如755。
  2. 检查模块是否已加载。打开Apache基本模块配置文件/etc/httpd/conf.modules.d/00-base.conf,确保该行存在且未注释掉:
LoadModule deflate_module modules/mod_deflate.so

注意:如果必须在Apache配置中进行更改,不要忘记重新启动Apache。重启的命令是sudo apachectl restart

组态

要开始使用mod_deflate,您必须指定应压缩的文件类型。一方面,通过压缩可以大大减小纯文本格式的大小,这就是将它应用于HTML,CSS或JavaScript文件的原因。另一方面,诸如Flash和图片之类的许多多媒体格式已经在其中具有压缩,并且额外的压缩将是徒劳的。

要配置mod_deflate,请使用示例代码创建新配置文件/etc/httpd/conf.d/mod_deflate.conf

<filesMatch "\.(js|html|css)$">
    SetOutputFilter DEFLATE
</filesMatch>

上面的代码表示当文件与扩展名匹配时.js.html或者.css将通过标准Apache SetOutputFilter指令进行压缩。您可能在您的网站上添加了或找到类似文本文件的扩展名,例如.txt

注意:您可以将上述代码放在主配置文件/etc/httpd/conf/httpd.conf中。但是,最好将这些特定配置部分分离到不同的文件中。为此,在CentOS 7中,由于放在目录/etc/httpd/conf.d/中的任何扩展名为.conf的主Apache配置文件都会自动加载IncludeOptional conf.d/*.conf

此外,mod_deflate有一些重要的配置选项:

  • DeflateCompressionLevel - 要应用的压缩级别。默认情况下,此级别为9,即最高级别的压缩。1是压缩程度最低的。较高的压缩率会以较高的服务器CPU使用率为代价来实现最小的输出。
  • DeflateMemLevel - 压缩库可以使用的内存量是zlib。默认值为9,也是最高值。要精确计算允许的内存,您应该将该DeflateMemLevel值乘以16K。
  • DeflateWindowSize - 压缩窗口大小。默认情况下,它是15的最高可能值。更高的数字意味着更高的压缩级别,同样以更多的服务器资源为代价。

在大多数情况下,您可以将上述值保留为默认值。但是,如果您怀疑使用mod_deflate后服务器性能显着下降,则可以在配置文件/etc/httpd/conf.d/mod_deflate.conf中配置较低的值,如下所示:

DeflateCompressionLevel 1

以上将降低压缩级别,这将导致文件变大。但是,mod_deflate将以这种方式使用更少的CPU。如果您决定应用任何此类更改,请务必重新启动Apache。

测试

有多种方法可以测试mod_deflate,但最简单的方法是使用wget,即非交互式网络下载器。如果您的CentOS 7 CVM上没有它,那么您可以使用该命令安装它sudo yum install -y wget

对于测试,您将需要一个至少几百KB的文本文件,压缩后该文件应该变小。如果您手头没有这样的文件,可以下载JQuery,它是一个流行的JavaScript库并将其上传到您的站点。如果您不确定将文件放在何处,只需将其上传到CentOS 7中的Apache默认文档根目录/var/www/html/即可。因此,该文件将位于默认站点的根目录下。

注意:为了使mod_deflate压缩输出,客户端(通常是浏览器)必须支持压缩。如果客户端不支持压缩,则文件将按原样发送。

将示例测试文件上传到您的站点后,使用wget将其下载。您可以从本地计算机或CVM执行此测试。像这样:

wget --header="Accept-Encoding: gzip" http://<your_server_ip>/jquery-1.11.3.js

在上面的示例中,您将从Apache服务器下载该jquery-1.11.3.js文件。为了利用压缩,我们传递了wget的头参数Accept-Encoding: gzip

以上述方式下载时,文件jquery-1.11.3.js应为83KB。事实上,这不是完全相同的原始JavaScript文件,它应该由客户端另外提取,在客户端也会产生一些开销。但是,通过网络传输的大小仅为83KB,比原始文件(278K)小三倍多。

您可以通过使用Linuxls命令检查下载文件的大小来确认上述计算,以列出目录内容,如下所示:

ls -lah jquery-1.11.3.js
-rw-r--r-- 1 user user 83K Apr 28 12:20 jquery-1.11.3.js

然后,您可以使用以下ls命令将结果与您站点上的原始文件进行比较:

ls -lah /var/www/html/jquery-1.11.3.js
-rw-r--r-- 1 apache apache 278K Apr 28 12:20 /var/www/html/jquery-1.11.3.js

结论

正如您从本文和JQuery库的实际示例中看到的那样,Mod_deflate可以帮助您显著降低站点的带宽需求。要继续优化您的站点,请阅读有关Apache内容缓存的信息,这是启用mod_deflate后的下一个步骤。

想要了解更多关于Linux的开源信息教程,请前往腾讯云+社区学习更多知识。

参考文献:《How To Install And Configure mod_deflate On CentOS 7》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT技术精选文摘

从构建分布式秒杀系统聊聊分布式锁

最近懒成一坨屎,学不动系列一波接一波,大多还都是底层原理相关的。上周末抽时间重读了周志明大湿的 JVM 高效并发部分,每读一遍都有不同的感悟。路漫漫,借此,把前...

1153
来自专栏北京马哥教育

Linux 下各文件夹的结构说明及用途介绍

/home:用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示。

1410
来自专栏zhangdd.com

使用静态ffmpeg二进制文件秒安装ffmpeg

说明:我们安装很多视频程序的时候都需要用到ffmpeg,差不多都喜欢用编译安装,过程很慢,而且有的系统会因为一些依赖出现很多问题,导致安装失败。有时候就算ffm...

2801
来自专栏小狼的世界

利用Apache ab以及GNUPlot来进行Web测试

最近写了几个测试脚本,希望要观察使用PUT方式上传文件和使用POST方式上传文件,两者效率的差别。

942
来自专栏晨星先生的自留地

linux软件包管理工具

2683
来自专栏北京马哥教育

Python之包管理工具快速入门

学Python最简单的方法是什么?推荐阅读:30万年薪Python开发工程师成长魔法 在Python环境中已经有很多成熟的包,可以通过安装这些包来扩展我们的程序...

2905
来自专栏黑白安全

8种DOS命令

  它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:...

2082
来自专栏小程序之家

如何实现小程序登录鉴权

为了方便用户使用小程序时,使用微信账号授权快速登录软件,微信小程序提供了相关的授权接口。小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快...

1.8K5
来自专栏数据和云

浅谈TimesTen内存数据库的结构

作者介绍 ? 朱亮 云和恩墨技术专家,6年专职oracle dba生涯先后服务于保险、金融、电信、百货等客户 Oracle TimesTen In-Memor...

3838
来自专栏Sorrower的专栏

详尽! Win10安装Java8+Tomcat9!

Java也好, Tomcat也好, 都是很实用的啦, 早点掌握还是有必要的. 喜欢记得点赞哦, 有意见或者建议评论区哦, 当然暗中关注我也是可以的.

3023

扫码关注云+社区

领取腾讯云代金券