如何安装和配置mod_deflate模块在Ubuntu 14.04

介绍

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

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

先决条件

本指南已在Ubuntu 14.04上测试。 为CentOS 7请查看本指南 模块安装和配置不是操作系统或操作系统版本相关的,但配置文件的位置可能因不同的操作系统及其版本而异。

它还假定您正在运行Apache 2.4.0或更高版本。 安装Apache,请按照步骤#1 如何安装Linux,Apache,MySQL和PHP(LAMP)在Ubuntu 14.04的文章。

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

安装

在Ubuntu 14.04上的默认Apache安装中包含和启用了Mod_deflate。 为了证实这一点来看apachectl ,Apache服务器控制接口,并过滤输出grep关键字deflate是这样的:

apachectl -t -D DUMP_MODULES |grep deflate

注意:如果apachectl是不是在你的路径,你可能需要使用的完整路径的命令: /usr/sbin/apachectl

您应该看到deflate_module (shared)如果安装mod_deflate模块并启用。 如果您没有看到此网址,请按照以下问题排查步骤操作:

  1. 确保已安装模块文件。 此文件是核心的一部分apache2你应该已经按照前面提到的先决条件安装的软件包。 默认情况下,它被发现/usr/lib/apache2/modules/mod_deflate.so 此外,Web服务器应该能够打开此文件。 为此mod_deflate.so应该有世界可读权限,如644。
  2. 检查模块是否已加载。 打开模块配置文件/etc/apache2/mods-enabled/deflate.load ,这是一个符号链接/etc/apache2/mods-available/deflate.load ,并确保这条线存在并且没有被注释掉:
LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

注意:不要忘了重新启动Apache,如果你不得不做出的Apache配置的变化。 重新启动命令是sudo apachectl restart

组态

要开始使用mod_deflate,你必须指定应该压缩哪些文件类型。 一方面,纯文本格式可以通过压缩大大减少,这就是为什么将它应用到HTML,CSS或JavaScript文件是有意义的。 另一方面,许多多媒体格式例如Flash和图片已经在其中具有压缩,并且额外的压缩将是徒劳的。

作为一个开始,你可以在文件中使用的默认配置/etc/apache2/mods-enabled/deflate.conf ,一个符号链接/etc/apache2/mods-available/deflate.conf ,那就是:

/etc/apache2/mods-enabled/deflate.conf
<IfModule mod_deflate.c>
        <IfModule mod_filter.c>
                # these are known to be safe with MSIE 6
                AddOutputFilterByType DEFLATE text/html text/plain text/xml

                # everything else may cause problems with MSIE 6
                AddOutputFilterByType DEFLATE text/css
                AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
                AddOutputFilterByType DEFLATE application/rss+xml
                AddOutputFilterByType DEFLATE application/xml
        </IfModule>
</IfModule>

上面的代码意味着,当一个文件的任何流行的文本文件的扩展名相匹配的扩展,如.html.txt.xml.css.js等,将通过mod_deflate模块的放气作用被压缩。 如果你不能确定扩展如何通过MIME类型映射检查文件/etc/mime.types 您可能希望添加更多针对您的网站的附加信息。


注意:在Ubuntu的Apache的配置是在多个文件直观地举办。 此外,通常不启用配置文件。 例如,模块的配置文件所在目录/etc/apache2/mods-available/ ,如/etc/apache2/mods-available/deflate.conf 只有当目录中创建一个符号连接到它的模块配置文件被启用/etc/apache2/mods-enabled//etc/apache2/mods-enabled/deflate.conf

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

  • DeflateCompressionLevel -压缩级别加以应用。 默认情况下,此级别为9,即最高级别的压缩。 1是最小的压缩水平。 更高的压缩将使得最小的输出以更高的服务器CPU使用率为代价。
  • DeflateMemLevel -内存量的zlib压缩库可以使用。 默认值为9,也是最高值。 要计算精确的内存允许,你应该乘以DeflateMemLevel由16K值。
  • DeflateWindowSize -压缩窗口大小。 默认情况下,它是最高的可能值15.更高的数字意味着更高的压缩级别,再次以更多的服务器资源的代价。

在大多数情况下,您可以将上述值保留为默认值。 但是,如果你怀疑你的服务器性能使用mod_deflate模块之后显著恶化,则可以配置在配置文件中值较低/etc/apache2/mods-enabled/deflate.conf是这样的:

DeflateCompressionLevel 1

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

测试

有各种方法来测试mod_deflate,但最简单的是使用wget,非交互式网络下载器。 如果你没有它已经在你的Ubuntu 14.04Droplet,那么你可以使用以下命令进行安装sudo apt-get install wget

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


注意:为了使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) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

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

支付宝扫一扫打赏

微信扫一扫打赏