Apache服务器优化

1、为什么要优化apache
在用户访问比较大时,apache工作效率会变低,在不提升硬件配置的情况下,优化apahce服务,能够缓解或增加访问量。提升web站点的安全性,提升数据流量等。

2、9种常用的优化方式
1.保持连接:保持客户端和web服务器之间的会话连接,减少三次握手和四次挥手的次数。
2.网页压缩:web服务器传输数据时,对数据进行压缩,节省流量。
3.网页缓存时间:调整网页缓存时间的长短
4.隐藏apache版本号:防止黑客通过版本号找到漏洞。
5.防盗链:防止其他网站盗链本站点的图片或视频,减少CPU运算量。
6.ab压力测试:测试服务器和apache服务的访问量,并发量等
7.apache日志分析:查看apache的日志,分析访问状态,统计访问数据。
8.apache日志分割:多个日志文件同时记录日志信息,大并发量访问时的日志写入。
9.apache工作模式:调整工作模式,完成不同并发量的处理。

保持会话

客户端在访问过程中,会发送链接请求(三次握手)和断开请求(四次挥手),而且是每个页面访问会发送一次。大量的链接请求占用网络带宽和服务器的CPU运算。

配置选项:
在httpd.conf文件中添加选项:

keepalive  ON|OFF		是否打开保持连接功能。根据网站的并发请求量决定是否打开,高并发时打开,并发量不高时可选择关闭。
keepalive  timeout		一次TCP连接多次HTTP请求之间的最大间隔时间,两次HTTP请求超过此时间连接将会断开。默认5秒
MaxKeepAliveRequests	一次TCP连接能够传输的最大HTTP请求数量。默认100

vim /etc/httpd/conf/httpd.conf

# 添加:
keepalive on
keepalivetimeout 60
maxkeepaliverequests 300

网页压缩

对web服务器发送的数据使用gzip格式进行压缩后,传输给浏览器,能够加快网页加载的速度,节省带宽,有利于搜索引擎抓取。但是会占用一定的CPU运算量。

Apache支持的压缩模块:
mod_gzip: 类似gzip算法,压缩速度略慢,压缩比例高,CPU占用略高,适用于访问量比较低的服务器。
mod_deflate:类似gzip算法,压缩速度略快,压缩比例低,CPU占用低,适用于访问量比较高的服务器。
DEFLATE是同时使用了LZ77算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法。
安装开源apache时,输入配置选项 --enable-deflate 启用压缩算法。(启用deflate模块,注意必须安装依赖包“zlib-devel”) deflate:缩小
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript 对什么格式的内容启用压缩
DeflateCompressionLevel 9 压缩级别为9,范围是1-9,数字大压缩率高
SetOutputFilter DEFLATE 启用deflate压缩方式

vim /etc/httpd/conf/httpd.conf

# 添加:
AddoutputFilterByType  DEFLATE  text/html  text/plain  text/css  text/xml text/javascript
DeflateCompressionLevel  9
SetOutputFilter  deflate

apache页面缓存时间

1.客户端能够对网页内容进行缓存的集中情况:
1)服务器允许客户端进行页面缓存
2)服务器站点是静态页面
3)动态网站只能缓存结构,不能缓存数据库中的数据。
4)图片,视频,flash等可以缓存,但不能缓存人机对话的内容(游戏类)。
2.缓存的作用:
1)能够加快客户端访问重复页面内容的速度,如刷新页面或返回主页,后退等操作。
2)节省服务器的数据处理量和数据传输量。

3.配置选项:
vim /etc/httpd/conf/httpd.conf

# 添加:
<IfModule mod_expires.c>
  ExpiresActive On     						##启用页面缓存时间
  ExpiresDefault "access plus 60 seconds"  	##设置默认缓存1分钟  
</IfModule>

4.源代码安装的apache需要在安装前配置模块

--enable-expires 启用缓网页缓存过期时间模块(expires:到期,终止,有效期)
启用mod_expires模块后,会自动生成页面头部信息中的Expires标签和CacheControl标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的。

隐藏apache的版本号

作用:防止黑客通过查询版本号,检测到响应的漏洞进行攻击。

1.rpm安装的apache修改方式:

vim /etc/httpd/conf/httpd.conf

# 添加:
ServerTokens Prod         ##显示最少的信息,默认是Full显示完整信息    tokens:象征            prod:元素积   signature:签名,部署
ServerSignature Off  	  ##生成页面的页脚

2.源代码安装的apache修改方式:

vim /usr/local/httpd/conf/httpd.conf

# 添加:
ServerTokens Prod         ##显示最少的信息,默认是Full显示完整信息
ServerSignature Off  	  ##生成页面的页脚

书上的方法:
方法二:如果是编译安装的 apache,我们可以做以下操作
进入 Apache的源码目录下的include目录,编辑 ap_release.h这个文件如下变量,然后重新编译安装即可

 #detine AP_SERVER BASEVENDOR "Apache Software Foundation
 #define AP_SERVER_BASEPROJECT "Apache HTTP  server"
 #define AP_SERVER_BASEPRODUCT "Apache" 
 #define AP_SERVER_MAJORVERSION_NUMBER 2 
 #define AP_SERVER_MINORVERSION NUMBER 2 
 #define AP_SERVER_PATCHLEVEL_NUMBER 15
 #define AP_SERVER_DEVBUILD_BOOLEAN 0

可以根据自己喜好,修改或隐藏版本号与名字。

防盗链

作用:本地网站上传的图片被其他网站盗用,在大量用户访问的情况下,本地网站的CPU运算量会大幅度提升。防盗链是为了禁止其他网站链接图片。

超链接:点击超链接后,页面会转到指定的位置。
盗链:在页面中显示其他指定页面的内容,由其他服务器进行运算。
配置选项:

RewriteEngine ON           		#打开网页重写功能
RewriteCond                     #设置匹配规则
RewriteRule                     #设置跳转动作

rewrite 的规则:%{HTTP_REFERER} 浏览header中的链接字段,存放一个连接的URL,代表是从哪个链接访问所需的网页。

!^	不以某个字段开头
.*$	以任意字符结尾
NC	不区分大小写
R强制跳转

规则匹配:如果相应变量的值匹配所设置的规则,则逐条往下处理。如果不匹配,则后面的规则不在继续匹配。

vim  /etc/httpd/conf/httpd.conf
在默认站点发布容器<Directory /var/www/html></Directory>中添加: 

rewriteengine on
	RewriteCond %{HTTP_REFERER} !^http://本地域名或IP地址/.*$  [NC]	   #格式:gg.cn            engine:引擎  cond:条件
	RewriteCond %{HTTP_REFERER} !^http://本地域名或IP地址$  [NC]
	RewriteCond %{HTTP_REFERER} !^http://本地完整域名或IP地址/.*$  [NC]	#格式:www.gg.cn
	RewriteCond %{HTTP_REFERER} !^http://本地完整域名或IP地址$  [NC]
	RewriteRule .*gif|jpg|png|swfgif|jpg|png|swf$ http://本地完整域名或IP地址/error.html  [R,NC]
	
	Require all granted(自带的)

ab站点压力测试

作用:对服务器的高并发量模式工作,或高数据流传输工作进行测试,保障服务器上线后的稳定性。

使用Apache自带的ab命令进行优化效果的测试。

# 语法:
ab  -n 请求数总和  -c  并发用户数  网站网址
ab -n 10000 -c 1000  http://192.168.10.2/index.html

# 重要参数: 
 Time taken for tests		#表示所有这些请求被处理完成所花费的总时间
 Failed requests         	#表示失败的请求数量
 Requests per second 		#吞吐率。计算公式: Complete requests / Time taken for tests
 Transfer rate              #表示这些请求在单位时间内从服务器获取的数据长度》
 
# 计算公式:
Total trnasferred/ Time taken for tests,这个统计很好的说明服务器的处理能力达到极限时,其出口带宽的需求量。

压力测试过程中,除ab以外,还会使用以下方法:
1.使用黑客工具对端口并发链接进行测试,如DDOS测试
2.使用多用户在线访问测试。如:将服务器挂在广域网后,找很多用户在线测试(公测)
3.通过虚拟客户端,使用测试工具进行高并发量测试。
4.找专业测试团队进行测试。

日志分析

作用:查看服务器的实时运行情况,比如哪些URL的访问请求数量最大+服务器每秒的请求数,制定正对性的优化方案。
安装软件:awstats(日志分析,工具)

安装awstats步骤:

1.解压软件
tar -zxvf awstats-7.3.tar.gz -C /usr/src

2.复制软件到local目录
cd /usr/src
mv awstats-7.3/ /usr/local/awstats
cd /usr/local/awstats/tools

3.给脚本添加可执行权限
chmod a+x awstats_configure.pl awstats_updateall.pl

4.执行配置脚本
./awstats_configure.pl
在以下标记方框的位置输入相关信息,
~输入web服务器的完整配置文件路径——“y”
~定义要创建的配置文件名(www.zhz666.com)
~定义配置文件路径(回车—回车—回车)

5.在hosts文件中添加域名
[root@localhost tools]# echo  "192.168.10.1  www.guiguedu.cn" >> /etc/hosts

6.配置awstats配置文件,修改apache日志文路径
[root@localhost tools]# vim /etc/awstats/awstats.www.guiguedu.cn.conf 
修改:
LogFile="/var/log/httpd/access_log"               50G

7.修改apache配置文件,修改访问权限
[root@localhost tools]# vim /etc/httpd/conf/httpd.conf
修改最后几行:
<Directory "/usr/local/awstats/wwwroot">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
    require all granted             #关键操作
</Directory>
[root@localhost tools]# systemctl restart httpd

8.设置awstats目录的属主
[root@localhost tools]# chown -R apache:apache /usr/local/awstats/
[root@localhost tools]# mkdir /var/lib/awstats
[root@localhost tools]# chown apache:apache /var/lib/awstats/

9.立刻更新日志记录【可省】
[root@localhost tools]# /usr/local/awstats/tools/awstats_updateall.pl now

10.创建计划任务,每分钟更新一次【可省】
[root@localhost tools]# crontab -e
添加:
*/1 * * * *    /usr/local/awstats/tools/awstats_updateall.pl  now  &> /dev/null

11.访问awstats主页
[root@localhost tools]# firefox http://www.guiguedu.cn/awstats/awstats.pl

日志分割

作用:如果Apache的访问量特别大,对于写日志的过程来说,将变成一种负担,我们需要使用多台服务器或多个文件进行日志的记录。
方法:
使用Apache自带的日志轮循程序写入工具rotatelogs进行日志分隔。
1、配置httpd.conf,定义日志名称

vim  /etc/httpd/conf/httpd.conf
修改:
CustomLog "| /sbin/rotatelogs -l /var/log/httpd/access_%Y%m%d%H%M%S.log 2" combined
解释:
2秒切割一次日志文件(切割日志时间频率可以自行改变,根据PV来决定)       -l选项是小写的L表示local time(本地时间)

2、重启服务器
3、客户端访问页面,查看日志文件

ll /var/log/httpd/

合并日志: 可以将每个服务器每天的日志文件通过 rsync 下载到专门进行访问统计分析的服务器上进行合并。合并多个服务器的日志文件,例如: log1 log2 log3 并输出到 log_all 中的方法是:
sort -m -t " " -k 4 -o log_all access_log1 access_log2 access_log3(这些名字要对应查看到的“日志文件”)

# 解释:
-m 		使用 merge 优化算法
-t 		指定排序的分割符
-k 4 	指定排序时行中多列时,排序的依据列为哪列,表示根据时间进行排序
-o 		表示将排序结果存放到指定的文件中

# 例:
sort -m -t " " -k 4 -o access_all_log access_20200414095902.log access_20200414095904.log access_20200414095906.log access_20200414095908.log

apache工作模式优化

修改工作模式:(删除#号的事情)

vim /etc/httpd/conf.modules.d/00-mpm.conf

# 修改:
LoadModule mpm_worker_module modules/mod_mpm_worker.so                   worker:工作(多进程多线程)             module:模块         event:事件(worker模式的变种)
# 或者
LoadModule mpm_event_module modules/mod_mpm_event.so

拓展:

Linux httpd命令是Apache HTTP服务器程序。
httpd为Apache HTTP服务器程序。直接执行程序可启动服务器的服务。

# 语法
httpd [-hlLStvVX][-c<httpd指令>][-C<httpd指令>][-d<服务器根目录>][-D<设定文件参数>][-f<设定文件>]

# 参数说明:
[root@localhost ~]# httpd -help
-c<httpd指令> 在读取配置文件前,先执行选项中的指令。
-C<httpd指令> 在读取配置文件后,再执行选项中的指令。
-d<服务器根目录> 指定服务器的根目录。
-D<设定文件参数> 指定要传入配置文件的参数。
-f<设定文件> 指定配置文件。
-h 显示帮助。
-l 显示服务器编译时所包含的模块。
-L 显示httpd指令的说明。
-S 显示配置文件中的设定。
-t 测试配置文件的语法是否正确。
-v 显示版本信息。
-V 显示版本信息以及建立环境。
-X 以单一程序的方式来启动服务器。

# 例:
[root@localhost ~]# httpd -t             检查配置文件语法错误 
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Syntax OK
[root@localhost ~]# httpd -l             显示编译模块
Compiled in modules:
  core.c
  mod_so.c
  http_core.c

Never put off till tomorrow what you can do today…

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星光落入你灰蒙蒙的眼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值