前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 14.04上安装和配置mod_deflate

如何在Ubuntu 14.04上安装和配置mod_deflate

原创
作者头像
挺问中原
修改2018-09-29 17:08:53
1.2K0
修改2018-09-29 17:08:53
举报

介绍

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

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

准备

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

它还假设您运行的是Apache 2.4.0或更高版本。要安装Apache,请按照此文章进行操作。

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

安装

在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,即:

<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.04 CVM上没有它,那么您可以使用该sudo apt-get install wget命令安装它。

对于测试,您将需要一个至少几百KB的文本文件,压缩后该文件应该变小。如果您手头没有这样的文件,可以下载JQuery,它是一个流行的JavaScript库并将其上传到您的站点。如果您不确定将文件放在何处,只需将其上传到Ubuntu 14.04中的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 Ubuntu 14.04》

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 安装
  • 组态
  • 测试
  • 结论
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档