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

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

原创
作者头像
新巴子
修改2018-09-29 17:08:57
1.2K0
修改2018-09-29 17:08:57
举报

介绍

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关键字过滤输出:

代码语言:javascript
复制
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,确保该行存在且未注释掉:
代码语言:javascript
复制
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

代码语言:javascript
复制
<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中配置较低的值,如下所示:

代码语言:javascript
复制
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执行此测试。像这样:

代码语言:javascript
复制
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命令检查下载文件的大小来确认上述计算,以列出目录内容,如下所示:

代码语言:javascript
复制
ls -lah jquery-1.11.3.js
-rw-r--r-- 1 user user 83K Apr 28 12:20 jquery-1.11.3.js

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

代码语言:javascript
复制
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》

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 安装
  • 组态
  • 测试
  • 结论
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档