如何安装和配置mod_deflate模块在CentOS 7

介绍

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

除了压缩内容之外,mod_deflate也可以用于解压缩目的。 如果您使用Apache作为反向代理,并且您希望进一步处理通过代理的内容,则此技术将适用。 然而,这种技术具有非常有限的使用。 我们将保持文章的焦点使用mod_deflate进行压缩。

先决条件

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

它还假定您正在运行Apache 2.4.0或更高版本。 安装Apache,请遵循的第1步 在CentOS如何安装Linux操作系统,Apache,MySQL和PHP(LAMP)的文章。

本教程中的所有命令都应以非root用户身份运行。 如果需要该命令的root访问权限,它会在前面加sudo 如果你不已经有成立,按照这个教程: 在CentOS 7初始服务器设置

安装

mod_deflate模块包含在在CentOS 7默认的Apache安装启用要确认此运行apachectl ,Apache服务器控制接口,并过滤输出grep关键字deflate是这样的:

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的示例代码:

/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与扩展名的文件.conf放在目录/etc/httpd/conf.d/被自动加载由于指令IncludeOptional conf.d/*.conf在主Apache配置文件的末尾。

此外,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 7Droplet,那么你可以使用以下命令进行安装sudo yum install -y wget

对于测试,您将需要至少几百KB的文本文件,在压缩时应该变得更小。 如果你不手边这样的文件,你可以下载的JQuery这是一个流行的JavaScript库,并上传到您的网站。 如果你不知道往哪里放你可以简单地把它上传到Apache的默认文档根目录也就是文件/var/www/html/ CentOS中7。因此该文件将在您的默认网站的根目录。

注意:为了使mod_deflate模块来压缩输出客户端(通常在浏览器)具有支持压缩。 如果客户端不支持压缩,文件将按原样发送。

一旦示例测试文件上传到您的站点下载wget 您可以从本地计算机或Droplet执行此测试。 喜欢这个:

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

在上面的例子中,你所下载jquery-1.11.3.js从Apache服务器的文件。 要使用压缩我们通过额外wget头参数Accept-Encoding: gzip

当以上述方式下载的文件jquery-1.11.3.js应83KB。 事实上,这不是完全相同的原始JavaScript文件,并且它应该由客户端另外提取,导致在客户端一些开销。 但是,通过网络传输的大小将只有83KB,比原始文件(278K)小三倍。

您可以通过检查与Linux命令下载的文件的大小,列出目录内容首先确认上述计算ls是这样的:

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模块之后的下一个合乎逻辑的步骤。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏