设为首页 收藏本站
查看: 823|回复: 0

[经验分享] linux 网站架设调优Apache(二)

[复制链接]

尚未签到

发表于 2018-11-20 08:17:28 | 显示全部楼层 |阅读模式
  七、启用压缩模块mod_deflate
  网站随着用户访问量的增加和内容量的增加,网站的带宽会不断的增加,随之就是网站成本的增加。并且当内容量增大的时候,客户端如果带宽小,就会影响用户的体验。因此从这两方面考虑,网站的某些内容必须经过压缩之后再传给用户,然后在用户客户端进行解压,来实现双方共赢的效果。
  apache的压缩要用到mod_deflate模块,该模块提供了DEFLATE输出过滤器,允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。它的核心思想就是把文件先在服务器进行压缩,然后再进行传输,这样可以显著减少文件传输的大小。当传输完毕后,客户端游览器会重新对压缩过的内容进行解压缩。如果没特殊情况的话,所以的文本内容都应该能被gzip压缩,例如:html(php),js,css,xml,txt等。特殊情况就是像一些首页上有很多广告投放的js代码,由于需要每次加载进而进行来访信息统计,所以这些广告代码拥有者网站的js不会经过gzip压缩,
  mod_deflate模块,在我们前篇部署的时候已经编译安装进去了。
  那么如果没有安装,如何安装呢?并且如果不知道到是否安装了,如何查看呢?
  1、mod_deflate模块检查及安装
  由于apache2.2.x和2.4.x这两个版本在检查mod_deflate模块是否安装方法方法是不同的。最后,我无奈做了很多测试,下面建议大家这样来检查。
  1.[root@c64-web /]# /usr/local/apache/bin/apachectl -M | grep deflate
  2.deflate_module (static)  #此种结果为编译安装时装的
  3.[root@c64-web /]# /usr/local/apache/bin/apachectl -M | grep deflate
  4.deflate_module (shared)  #此种结果为DSO方式安装的
  安装了的话,就可以直接进行压缩配置了,如果没有安装,下面为安装方法
  a)编译时安装方法
  编译的时候跟上--enable-deflate即可实现安装
  b)DSO方式安装
  1.[root@c64-web /]# cd /server/tools/httpd-2.4.6/modules/filters/  #切到apache源码包mod_deflate所在的目录下
  2.[root@c64-web filters]# /usr/local/apache/bin/apxs -c -i -a mod_deflate.c  #以dso的方式编译安装到apache中
  3.[root@c64-web filters]# ll /usr/local/apache/modules/mod_deflate.so   #检查mod_deflate是否安装,成功安装这里会显示出该文件
  4.-rwxr-xr-x 1 root root 76697 11月  5 07:50 /usr/local/apache/modules/mod_deflate.so
  扩展:使用DSO方式安装,apxs后跟的参数详解
  1.-c  此选项表明需要执行编译操作。它首先会编译c源程序(.c)files为对应的目标代码文件(.c),然后连接这些目标代码和files中其余的目标代码文件(.c和.a),以生成动态共享对象dsofile。如果没有指定-s选项,则此输出文件名由files中的第一个文件名推测得出,也就是默认mod_name.so。
  2.-i  此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录。
  3.-a  此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
  4.压缩模块配置
  2、配置压缩参数
  注意如果我们是编译安装时已经编译进去的,此时我们需要先将httpd.conf主配置文件中
  1.LoadModule deflate_module     modules/mod_deflate.so
  此行解锁后再进行下面操作,不然下面的操作会报错。
  我们需要在虚拟机的中添加如下配置即可实现压缩*:80>
  01.ifmodule mod_deflate.c>
  02.DeflateCompressionLevel 9      #压缩等级,越大效率越高,消耗CPU也越高
  03.SetOutputFilter DEFLATE           #启用压缩
  04.AddOutputFilterByType DEFLATE text/html text/plain text/xml     #仅压缩限制特定的MIME类型文件:
  05.AddOutputFilterByType DEFLATE application/javascript
  06.AddOutputFilterByType DEFLATE text/css
  07.AddOutputFilterByType DEFLATE image/gif image/png  image/jpe image/swf image/jpeg image/bmp
  08.#DeflateFilterNote ratio     #在日志中放置压缩率标记,下面是记录日志的,这个功能一般不用
  09.#LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
  10.#CustmLog logs/deflate_log.log deflate
  11.ifmodule>
  下面是朋友公司的另外一种压缩配置,有兴趣的朋友们也可以操作操作。
  01.ifmodule mod_deflate.c>
  02.DeflateCompressionLevel 9
  03.SetOutputFilter DEFLATE
  04.DeflateFilterNote Input instream #声明输入流的byte数量
  05.DeflateFilterNote Output outstream  #声明输出流的byte数量
  06.DeflateFilterNote Ratio ratio   #声明压缩的百分比
  07.#LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate      #声明日志类型
  08.#CustomLog logs/deflate_log.log deflate    #声明日志类型
  09.AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript  #仅压缩限制特定的MIME类型文件
  10.ifmodule>
  执行上面的添加后,我们对apache进行优雅重启
  八、mod_expires缓存功能
  虽然我们上面通过mod_deflate模块启用了压缩,从很大程度上节约了企业带宽,降低了企业成本。可是由于现在越来越多的图片、脚本、css和flash被嵌入到页面中,当客户访问站点势必会做很多次的http请求,因此我们还可以通过mod_expires缓存模块来设置ExpiresHeader来缓存这些文件。Expires是通过header报文来指定特定类型的文件在游览器中的缓存时间的。平时,我们大多数的图片,flash在发布之后都是不需要经常修改的,因此做了缓存之后,游览器第一次从服务器下载之后,就不需要再从服务器下载这些文件而是直接从游览器缓存中读取了。这样客户访问页面的速度就会大大加快,企业的带宽压力也得到了缓解。
  1、mod_expires模块检查及安装
  检查mod_expires模块是否安装的方法如下:
  1.[root@c64-web /]# /usr/local/apache/bin/apachectl -M | grep deflate
  2.expires_module (static)  #此种结果为编译安装时装的
  3.[root@c64-web /]# /usr/local/apache/bin/apachectl -M | grep deflate
  4.expires_module (shared)  #此种结果为DSO方式安装的
  安装了的话,就可以直接进行压缩配置了,如果没有安装,下面为安装方法
  a)编译方式安装
  编译的时候跟上--enable-expires即可实现安装
  b)DSO方式安装
  1.[root@c64-web /]# cd /server/tools/httpd-2.4.6/modules/filters/  #切到apache源码包mod_expires所在的目录下
  2.[root@c64-web filters]# /usr/local/apache/bin/apxs -c -i -a mod_expires.c  #以dso的方式编译安装到apache中
  3.[root@c64-web filters]# ll /usr/local/apache/modules/mod_expires.so   #检查mod_deflate是否安装,成功安装这里会显示出该文件
  4.-rwxr-xr-x 1 root root 37439 11月  5 02:02 /usr/local/apache/modules/mod_expires.so
  2、配置缓存参数
  注意如果我们是编译安装时已经编译进去的,此时我们需要先将httpd.conf主配置文件中
  1.LoadModule expires_module modules/mod_expires.so
  此行解锁后再进行下面操作,不然会报错。
  缓存的用法有3种,分别问对全局,对目录,对虚拟主机。
  a)对全局
  对全局的配置就是在apache主配置文件httpd.conf的末尾加入如下参数即可
  01.ExpiresActive on
  02.ExpiresDefault "access plus 12 month"
  03.ExpiresByType text/html "access plus 12 months"
  04.ExpiresByType text/css "access plus 12 months"
  05.ExpiresByType image/gif "access plus 12 months"
  06.ExpiresByType image/jpeg "access plus12  12 months"
  07.ExpiresByType image/jpg "access plus 12 months"
  08.ExpiresByType image/png "access plus 12 months"
  09.EXpiresByType application/x-shockwave-flash "access plus 12 months"
  10.EXpiresByType application/x-javascript "access plus 12 months"
  11.ExpiresByType video/x-flv "access plus 12 months"
  b)对目录
  对目录的配置就是在apache主配置文件中标签内加入如下参数即可
  01.Directory "/www/html">
  02.AllowOverride None
  03.Options None
  04.Require all granted
  05.ErrorDocument 404 /404.html
  06.ExpiresActive on
  07.ExpiresDefault "access plus 12 month"
  08.ExpiresByType text/html "access plus 12 months"
  09.ExpiresByType text/css "access plus 12 months"
  10.ExpiresByType image/gif "access plus 12 months"
  11.ExpiresByType image/jpeg "access plus12  12 months"
  12.ExpiresByType image/jpg "access plus 12 months"
  13.ExpiresByType image/png "access plus 12 months"
  14.EXpiresByType application/x-shockwave-flash "access plus 12 months"
  15.EXpiresByType application/x-javascript "access plus 12 months"
  16.ExpiresByType video/x-flv "access plus 12 months"
  17.Directory>
  c)对虚拟主机
  对虚拟主机的配置就是在apache的虚拟主机配置文件httpd-vhost.conf中添加如下参数即可
  01.VirtualHost *:80>
  02.ServerAdmin 274546888@qq.com
  03.DocumentRoot "/www/html"
  04.ServerName www.sunsky.pw
  05.ServerAlias sunsky.pw
  06.CustomLog "|/usr/local/sbin/cronolog /app/logs/www_access_%Y%m%d.log" combined
  07.ErrorLog "|/usr/local/sbin/cronolog /app/logs/www_error_%Y%m%d.log"
  08.ExpiresActive on
  09.ExpiresDefault "access plus 12 month"
  10.ExpiresByType text/html "access plus 12 months"
  11.ExpiresByType text/css "access plus 12 months"
  12.ExpiresByType image/gif "access plus 12 months"
  13.ExpiresByType image/jpeg "access plus12  12 months"
  14.ExpiresByType image/jpg "access plus 12 months"
  15.ExpiresByType image/png "access plus 12 months"
  16.EXpiresByType application/x-shockwave-flash "access plus 12 months"
  17.EXpiresByType application/x-javascript "access plus 12 months"
  18.ExpiresByType video/x-flv "access plus 12 months"
  19.VirtualHost>


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-637151-1-1.html 上篇帖子: linux 网站架设调优Apache(一) 下篇帖子: linux 网站架设调优Apache(三)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表