作者:Katycui | 来源:互联网 | 2023-08-15 16:46
实验的环境
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
总结:ErrorDocument的命令格式如下:
ErrorDocument 错误代码 跳转到的页面或文件
另外这里需要注意,你若设置跳转到文件,必须要有这个文件才行。另外文件必须在站点目录内,不然会报错。
在跳转到文件的测试中,我用全路径和别名路径进行测试,当把404错误页面跳转文件放到其他目录的时候,不报错,但是页面跳转不过去。
启用压缩模块mod_deflate
网站随着用户访问量的增加和内容量的增加,网站的带宽会不断的增加,随之就是网站成本的增加。并且当内容量增大的时候,客户端如果带宽小,就会影响用户的体验。因此从这两方面考虑,网站的某些内容必须经过压缩之后再传给用户,然后在用户客户端进行解压,来实现双方共赢的效果。
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在发布之后都是不需要经常修改的,因此做了缓存之后,游览器第一次从服务器下载之后,就不需要再从服务器下载这些文件而是直接从游览器缓存中读取了。这样客户访问页面的速度就会大大加快,企业的带宽压力也得到了缓解。
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,再次刷新站点
扩展: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”