热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LAMP环境调优apache调优设置错误页面开启压缩和缓存功能

实验的环境

LAMP环境:
操作系统: centos7.4
apache版本:httpd-2.4.10
PHP版本: php5.6.32
源码包存放位置:/usr/src
源码包编译安装位置:
apache: /usr/local/apache/
php:/server/php-5.4
mysql:/server/mysql-5.5/

2 设置错误页面-开启压缩和缓存功能

错误页面优雅显示

为了提升网站的用户体验,避免404,403之类的丑陋的默认错误提示出现。我们需要对错误页面进行优化,让他们变的漂亮一点。错误页面不仅在于告诉用户访问出现了问题,而且需要引导用户到正确的页面。
错误页面优雅化显示的实现方式主要有两种,下面我们主要以404错误为例:
方法:
[[email protected] ~]# vim /etc/httpd/httpd.conf #在根目录的标签中添加以下标记内容
217
。。。
243 ErrorDocument 404 /404.html
244
注:#将404错误跳转到/usr/local/apache/htdocs下的404.html页面上

创建404测试页:
[[email protected] ~]# echo “404 go to home” > /usr/local/apache/htdocs/404.html
重启:
[[email protected] ~]#systemctl restart httpd
LAMP环境调优-apache调优-设置错误页面-开启压缩和缓存功能
总结:ErrorDocument的命令格式如下:
ErrorDocument 错误代码 跳转到的页面或文件
另外这里需要注意,你若设置跳转到文件,必须要有这个文件才行。另外文件必须在站点目录内,不然会报错。
在跳转到文件的测试中,我用全路径和别名路径进行测试,当把404错误页面跳转文件放到其他目录的时候,不报错,但是页面跳转不过去。

启用压缩模块mod_deflate

网站随着用户访问量的增加和内容量的增加,网站的带宽会不断的增加,随之就是网站成本的增加。并且当内容量增大的时候,客户端如果带宽小,就会影响用户的体验。因此从这两方面考虑,网站的某些内容必须经过压缩之后再传给用户,然后在用户客户端进行解压,来实现双方共赢的效果。
LAMP环境调优-apache调优-设置错误页面-开启压缩和缓存功能
apache的压缩要用到mod_deflate模块,该模块提供了DEFLATE输出过滤器,允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。它的核心思想就是把文件先在服务器进行压缩,然后再进行传输,这样可以显著减少文件传输的大小。当传输完毕后,客户端浏览器会重新对压缩过的内容进行解压缩。如果没特殊情况的话,所有的文本内容都应该能被gzip压缩,例如:html(php),js,css,xml,txt等。

mod_deflate模块检查及安装

检查:
[[email protected] httpd-2.4.10]# /usr/local/apache/bin/apachectl -M | grep deflate
Syntax OK #出现这个说明没有安装。或没任何输出,也是说明没有安装
如果安装了,将弹出以下内容:
[[email protected] src]# /usr/local/apache/bin/apachectl -M | grep deflate
deflate_module (static) #弹出此种结果,则为编译安装时装的
[[email protected] src]# /usr/local/apache/bin/apachectl -M | grep deflate
deflate_module (shared) #弹出此种结果,则为DSO方式安装的

安装了的话,就可以直接进行压缩配置了,如果没有安装,下面为安装方法
a)编译时安装方法
编译的时候跟上–enable-deflate即可实现安装
b)DSO方式安装。
扩展:DSO: Dynamic shared object动态共享对象 。DSO模块可以在编译服务器之后编译,也可以用Apache扩展工具(apxs)编译并增加
使用DSO方式安装,/usr/local/apache/bin/apxs后跟的参数详解
-c 此选项表明需要执行编译操作。
-i 此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录。
-a 此选项自动增加一个LoadModule行到httpd.conf文件中,以**此模块,或者,如果此行已经存在,则启用之。
[[email protected] filters]#cd /usr/src/httpd-2.4.10/modules/filters
#切到apache源码包mod_deflate所在的目录下
[[email protected] filters]# /usr/local/apache/bin/apxs -c -i -a
/usr/src/httpd-2.4.10/modules/filters/mod_deflate.c
#以dso的方式编译安装到apache中
[[email protected] filters]# ll /usr/local/apache/modules/mod_deflate.so
-rwxr-xr-x 1 root root 61912 Aug 31 09:05 /usr/local/apache2.2-yunzu/modules/mod_deflate.so
#检查mod_deflate是否安装,成功安装这里会显示出该文件

压缩模块配置

1、配置压缩参数
[[email protected] ~]# vim /etc/httpd/httpd.conf #确认下面这一行是打开的。默认是打开的。
103 LoadModule deflate_module modules/mod_deflate.so
#此行解锁后再进行下面操作,不然下面的操作会报错。
[[email protected] ~]# vim /etc/httpd/httpd.conf #在以下内容后,插入:
57
58

mod_expires: 设置网页缓存时间

虽然我们上面通过mod_deflate模块启用了压缩,从很大程度上节约了企业带宽,降低了企业成本。可是由于现在越来越多的图片、脚本、css和flash被嵌入到页面中,当客户访问站点势必会做很多次的http请求,因此我们还可以通过mod_expires缓存模块来设置ExpiresHeader来缓存这些文件。
Expires是通过header报文来指定特定类型的文件在游览器中的缓存时间的。平时,我们大多数的图片,flash在发布之后都是不需要经常修改的,因此做了缓存之后,游览器第一次从服务器下载之后,就不需要再从服务器下载这些文件而是直接从游览器缓存中读取了。这样客户访问页面的速度就会大大加快,企业的带宽压力也得到了缓解。
LAMP环境调优-apache调优-设置错误页面-开启压缩和缓存功能

mod_expires模块检查及安装

检查mod_expires模块是否安装的方法如下:
[[email protected] ~]# /usr/local/apache/bin/apachectl -M |grep expires
expires_module (static) #此种结果为编译安装时装的
[[email protected] ~]# /usr/local/apache/bin/apachectl -M |grep expires
expires_module (shared) #此种结果为DSO方式安装的
安装了的话,就可以直接进行缓存配置了,如果没有安装,下面为安装方法
a)编译方式安装
编译的时候跟上–enable-expires即可实现安装
b)DSO方式安装
[[email protected] ~]# cd /usr/src/httpd-2.4.10/modules/metadata/ #切到apache源码包mod_expires所在的目录下
[[email protected] metadata]# ls mod_expires.c
mod_expires.c

以dso的方式编译安装到apache中
[[email protected] metadata]# /usr/local/apache/bin/apxs -c -i -a
/usr/src/httpd-2.4.10/modules/metadata/mod_expires.c

注意如果我们是编译安装时已经编译进去的,要先解锁以下行,再进行下面操作,不然会报错。
[[email protected] ~]# vim /etc/httpd/conf/httpd.conf #确认这一行是开启的。
118 LoadModule expires_module modules/mod_expires.so

存的用法有3种,分别问对全局,对目录,对虚拟主机。
1、对全局
对全局的配置就是在apache主配置文件httpd.conf的末尾加入如下参数即可
[[email protected] ~]# vim /etc/httpd/httpd.conf #在最后添加以下内容:

2、对目录
对目录的配置就是在apache主配置文件中标签内,最后加入如下参数即可
[[email protected] ~]# vim /usr/local/apache2.2-yunzu/conf/httpd.conf
133

3 对虚拟主机
对虚拟主机的配置就是在apache的虚拟主机配置文件httpd-vhost.conf中添加如下参数即可
[[email protected] ~]# vim /etc/httpd/httpd.conf
修改:
216 DocumentRoot “/usr/local/apache/htdocs”
改为:
#DocumentRoot “/usr/local/apache/htdocs”

修改:
467 # Include /etc/httpd/extra/httpd-vhosts.conf
改为:
Include /etc/httpd/extra/httpd-vhosts.conf

[[email protected] ~]# vim /etc/httpd/extra/httpd-vhosts.conf

ServerAdmin [email protected]
DocumentRoot “/www/html”
ServerName www.yunzu.cn
ServerAlias yunzu.cn
ErrorLog “logs/dummy-host.example.com-error_log”
CustomLog “logs/dummy-host.example.com-access_log” common

Options None
Require all granted

[[email protected] ~]# mkdir -pv /www/html
[[email protected] ~]# echo “yunzu.cn”> /www/html/index.html
以上三种配置任何一种配置之后,对apache服务器进行优化重启,然后用火狐或者google游览器
在浏览器中访问192.168.1.63,按下f12,点击network,再次刷新站点
LAMP环境调优-apache调优-设置错误页面-开启压缩和缓存功能

扩展:expires模块的语法

expires模块用到了ExpiresDefault和EXpiresByType两个指令,下面是这两个指令的语法。
ExpiresDefault “ [plus] {}”
EXpiresByType type/encoding " [plus] {}"
其中的参数有3个:access,now(等价于‘access’),modification
modification [ˌmɒdɪfɪˈkeɪʃn] 改性,修正
plus关键字是可选的。
plus [plʌs] 加上
必须是整数,确保可以atoi()所接收。(atoi可以把字符串转换成长整型数)
参数类型:years,months,weeks,days,hours,minutes,seconds
例如:下面3个指令都表示文档默认的有效期是一个月
ExpiresDefault “access plus 1 month”
ExpiresDefault “access plus 4 weeks”
ExpiresDefault “access plus 30 days”
有效期可以通过增加“”子句进一步调整
ExpiresByType text/html “access plus 1 month 15 days 2 hours”
ExpiresByType image/gif “modification plus 5 hours 3 minutes”


推荐阅读
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文总结了在开发中使用gulp时的一些技巧,包括如何使用gulp.dest自动创建目录、如何使用gulp.src复制具名路径的文件以及保留文件夹路径的方法等。同时介绍了使用base选项和通配符来保留文件夹路径的技巧,并提到了解决带文件夹的复制问题的方法,即使用gulp-flatten插件。 ... [详细]
author-avatar
Katycui
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有