Apache优化

文章目录

一、Apache优化之保持连接

(1)长连接的作用:

  • HTTP协议使TCP的子协议,HTTP建立连接之前需要先建立TCP连接,断开之前也需要先断开TCP连接,而TCP的建立和断开消耗的资源通过HTTP长连接可以节约下来。
  • 对于HTTP/1.1版本来说,尽量的保持与客户端的TCP连接,只通过一个TCP连接发送多个HTTP请求响应,相对于客户端,可以提高%50以上的响应时间,而对于服务器,可以降低建立与断开TCP连接时消耗的资源。

(2)apache为什么要开启长连接?

在开启apache服务器的长连接之后,当客户端请求完成之后,负责返回给客户端数据的进程并不会直接退出,而是等待客户端的下一个请求,这样做的主要目的就是减少TCP的三次握手,节省资源

(3)优化Apache长连接

-实验环境

系统版本ip地址主机名需要软件
Centos7.4192.168.100.202rzyhttpd-2.2.17.tar.gz

使用模块: ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite

-实验步骤

******(1)先做基础配置
[root@Centos7 ~]# hostnamectl set-hostname rzy
[root@Centos7 ~]# su
[root@rzy ~]# systemctl stop firewalld
[root@rzy ~]# setenforce 0
setenforce: SELinux is disabled
[root@rzy ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
mount: /dev/sr0 已经挂载或 /mnt 忙
       /dev/sr0 已经挂载到 /mnt 上
******(2)上传源码包,安装apache
[root@rzy ~]# ll
总用量 6448
-rw-------. 1 root root    1264 112 18:27 anaconda-ks.cfg
-rw-r--r--  1 root root 6597991 415 01:39 httpd-2.2.17.tar.gz
[root@rzy ~]# tar xf httpd-2.2.17.tar.gz -C /usr/src/
[root@rzy ~]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# ./configure \
> --prefix=/usr/local/httpd \
> --enable-so \
> --enable-cgi \
> --enable-rewrite \
> && make && make install 

******(2)修改配置文件
[root@rzy httpd-2.2.17]# vim /usr/local/httpd/conf/extra/httpd-default.conf 
。。。。。。
 15 #
 16 KeepAlive On  #是否打开长连接功能。要根据网站的并发请求量决定是否打开。推荐在高并发场景打开,并发不高时可以选择关闭
 17 
。。。。。。
 22 #
 23 MaxKeepAliveRequests 100 #一次TCP连接能够传输的最大HTTP请求数量
 24 
。。。。。。
 28 #
 29 KeepAliveTimeout 20 #一次TCP连接中多次HTTP请求之间的最大间隔时间,两次HTTP请求超过此时间,那么TCP连接就会断开
 30 
#保存退出
[root@rzy httpd-2.2.17]# vim /usr/local/httpd/conf/httpd.conf 
。。。。。。
 96 #
 97 ServerName www.rzy.com:80  #删除注释并且修改域名
 98 
。。。。。。
396 # Various default settings
397 Include conf/extra/httpd-default.conf  #删除注释,使这个配置文件生效
398 
。。。。。。
#保存退出

******(3)开启httpd服务
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/apachectl start     
[root@rzy httpd-2.2.17]# netstat -anpt | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      53057/httpd       

-使用抓包软件测试

  • 先进行访问,测试是否可以正常访问

在这里插入图片描述

  • 使用抓包软件测试(Fiddler软件)
    在这里插入图片描述

二、Apache优化之网页压缩传输

(1)网页压缩的作用:

  • apache的网页压缩功能,是使用Gzip压缩算法来对apache服务器发布的网页内容先进行压缩,然后再传输到客户端浏览器

  • 通常在CPU有空闲,网站带宽占用高时,会启用压缩

(2)网页压缩传输的原理

客户端先请求httpd服务器的数据,httpd服务器再返回数据报给客户端时,会先对返回的数据进行压缩之后在进行传输

(3)网页压缩传输的优点

  1. 加快网页加载的速度,改善用户的浏览体验
  2. 降低网络传输带宽,节省服务器流量
  3. 网页压缩有利于搜索引擎的抓取

(4)优化Apache网页压缩传输

-实验环境

系统版本ip地址主机名需要软件
Centos7.4192.168.100.202rzyhttpd-2.2.17.tar.gz
  • 使用模块: ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite --enable-deflate

  • 优化网页压缩传输需要使用yum安装依赖包: yum -y install zlib-devel

  • **优化网页压缩传输可以使用的模块有 **:(本次实验使用deflate)

mod_gzipmod_deflate
Gzip算法,运作原理相似Gzip算法,运作原理相似
压缩速度略慢压缩速度略快
压缩比略高压缩比略低
cpu占用率略高cpu占用率略低
低浏览量服务器高浏览量服务器

-实验步骤

******(1)进行基础配置(略)

******(2)上传源码包,进行配置、安装
[root@rzy ~]# yum -y install zlib-devel  #安装依赖包
。。。。。
完毕!
[root@rzy httpd]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# make clean  #清空之前的配置内容
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd/  --enable-so --enable-rewrite  --enable-deflate --enable-cgi
[root@rzy httpd-2.2.17]# make && make install  #编译安装

******(3)修改配置文件
[root@rzy httpd-2.2.17]#  /usr/local/httpd/bin/apachectl -D DUMP_MODULES | grep deflate #确认是否有deflate模块
Syntax OK
 deflate_module (static)
[root@rzy httpd-2.2.17]# vim /usr/local/httpd/conf/httpd.conf  #修改配置文件
。。。。。。 #在最后一行添加
411 AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript #指定对什么格式的内容进行压缩
412 DeflateCompressionlevel 9  #压缩级别,范围是1-9,数字越高压缩率越高
413 SetOutputFilter DEFLATE    #启动deflate压缩方式
414 
#保存退出
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/apachectl start #开启httpd
[root@rzy httpd-2.2.17]# netstat -anpt | grep 80  #检查端口
tcp6       0      0 :::80                   :::*                    LISTEN      119230/httpd   

-测试

在这里插入图片描述

三、Apache优化之页面缓存

(1)优化页面缓存的作用

  • 通过mod_expires模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求,减轻服务端工作压力。
  • 启动mod_expires模块后,会自动生成页面头部信息中的Expires标签和CacheControl标签,从而降低客户端的访问频率和次数,减少不必要的流量并且增加访问速度

(2)优化Apache页面缓存

-实验环境

系统版本ip地址主机名需要软件
Centos7.4192.168.100.202rzyhttpd-2.2.17.tar.gz
  • 使用模块: ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite --enable-expires

-实验步骤

******(1)先做基础配置(略)

******(2)上传httpd源码包,进行配置、安装
[root@rzy ~]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# make clean  #删除配置
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi --enable-expires  
[root@rzy httpd-2.2.17]# make && make install 
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/apachectl -D DUMP_MODULES | grep expires #检查是否有expires模块
Syntax OK
 expires_module (static)

******(3)修改配置文件
[root@rzy metadata]# vim /usr/local/httpd/conf/httpd.conf  #修改配置文件
。。。。。。  #在最下面写入
414 <IfModule mod_expires.c>
415     ExpiresActive On   #启动页面缓存
416     ExpiresDefault "access plus 60 seconds"  #指定页面缓存时间,这里是60秒
417 </IfModule>
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/apachectl restart #重新启动httpd

-测试

在这里插入图片描述

四、Apache优化之隐藏版本号

(1)为什么要隐藏版本号

在真实环境中,公司是肯定不会想要别人知道自己用的什么web服务器,所以就需要隐藏web版本号

(2)优化Apache隐藏版本号

-实验环境

系统版本ip地址主机名需要软件
Centos7.4192.168.100.202rzyhttpd-2.2.17.tar.gz
  • 使用模块: ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite

-实验步骤

有两种方式进行隐藏,根据实际环境选择

方式一:
******直接修改配置文件
[root@rzy ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf 
。。。。。。
 54 #
 55 ServerTokens Prod    #显示最少的信息,prod表示最少的信息,full就表示显示完整信息
 56 
。。。。。。
 64 #
 65 ServerSignature Off  #生成页面的页脚,off关闭,on开启
 66 
。。。。。。
#保存退出
[root@rzy ~]# /usr/local/httpd/bin/apachectl restart  #重启服务 
方式一测试:

没有做隐藏版本号时:

在这里插入图片描述

隐藏版本号后:

在这里插入图片描述

方式二:
******#使用源码包重新编译,这个会连本地版本名称也修改了,所以修改之前要保存好web服务器的版本号和服务名称
[root@rzy ~]# cd /usr/src/httpd-2.2.17/  #先进入到源码包解压的位置
[root@rzy httpd-2.2.17]# cd include/     #进入include目录   
[root@rzy include]# vim ap_release.h     #修改这个文件
。。。。。。
 42 #define AP_SERVER_BASEVENDOR "aaaaaa Software Foundation" #这三个会修改web服务名称,三个要修改成相同
 43 #define AP_SERVER_BASEPROJECT "aaaaaa"
 44 #define AP_SERVER_BASEPRODUCT "aaaaaa"
 45 
 46 #define AP_SERVER_MAJORVERSION_NUMBER 6  #这是三个版本
 47 #define AP_SERVER_MINORVERSION_NUMBER 6
 48 #define AP_SERVER_PATCHLEVEL_NUMBER   6
。。。。。。
#保存退出
[root@rzy include]# cd ..
[root@rzy httpd-2.2.17]# make clean  #清除配置
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd/ --enable-so --enable-rewrite --enable-cgi  #重新进行配置
[root@rzy httpd-2.2.17]# make && make install  #编译、安装
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/apachectl -v
Server version: aaaaaa/6.6.6 (Unix)  #web服务器名称变成了aaaaaa,版本号变成了6.6.6
Server built:   Apr 15 2021 17:08:24
[root@rzy httpd-2.2.17]# vim /usr/local/httpd/conf/extra/httpd-default.conf  #把方式一的修改内容进行修改
。。。。。。
 54 #
 55 ServerTokens Full
 56 
。。。。。。
 64 #
 65 ServerSignature On
 66 
。。。。。。
#保存退出
方式二测试:

修改前:

在这里插入图片描述
修改后:(如果重新启动后没有修改成功,那就重启系统)
在这里插入图片描述

五、Apache优化之防盗链

(1)防盗链的作用

防盗链就是防止别人盗用服务器中的图片、文件、视频等相关资源。

(2)防盗链的选项和匹配规则

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

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

(3)优化Apache防盗链

-实验环境

系统版本ip地址主机名需要软件域名
Centos7.4192.168.100.202rzyhttpd-2.2.17.tar.gzwww.rzy.com
Centos7.4192.168.100.203rzy-02httpd-2.2.17.tar.gzwww.rzy02.com
  • 使用模块: ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite
  • 防盗链使用的模块是: --enable-rewrite

-实验目的

防止rzy-02盗取rzy服务器的图片

-实验步骤

  • rzy配置:
******(1)做基础配置
[root@Centos7 ~]# hostnamectl set-hostname rzy
[root@Centos7 ~]# su
[root@rzy ~]# systemctl stop firewalld
[root@rzy ~]# setenforce 0
setenforce: SELinux is disabled
[root@rzy ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
mount: /dev/sr0 已经挂载或 /mnt 忙
       /dev/sr0 已经挂载到 /mnt 上
[root@rzy ~]# 

******(2)上传源码包,进行配置、编译、安装
[root@rzy ~]# ll
总用量 6448
-rw-------. 1 root root    1264 112 18:27 anaconda-ks.cfg
-rw-r--r--  1 root root 6597991 415 17:30 httpd-2.2.17.tar.gz
[root@rzy ~]# tar xf httpd-2.2.17.tar.gz -C /usr/src/
[root@rzy ~]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi 
[root@rzy httpd-2.2.17]# make && make install 

******(3)添加hosts文件解析两个服务器
[root@rzy httpd-2.2.17]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.202 www.rzy.com    #添加两个服务器的ip和域名
192.168.100.203 www.rzy02.com

******(4)修改httpd主配置文件
[root@rzy httpd-2.2.17]# vim /usr/local/httpd/conf/httpd.conf  #修改文件
。。。。。。
 96 #
 97 ServerName www.rzy.com:80 #修改域名
 98 
。。。。。。
131 <Directory "/usr/local/httpd/htdocs">
132     RewriteEngine On
133     RewriteCond %{HTTP_REFERER} !^http://rzy.com/.*$ [NC]   
134     RewriteCond %{HTTP_REFERER} !^http://rzy.com$ [NC]
135     RewriteCond %{HTTP_REFERER} !^http://www.rzy.com/.*$ [NC]
136     RewriteCond %{HTTP_REFERER} !^http://www.rzy.com$ [NC]
137     RewriteRule .*\(gif|jpg|swf\)$ http://www.rzy.com/1.jpg [R,NC]  #如果访问的不是上面这几个网址的话就强制跳转
。。。。。。
#保存退出

******(5)写一个网页文档
[root@rzy httpd-2.2.17]# cd /usr/local/httpd/htdocs/
<html>
   <body>
      <h1>www.rzy.com</h1>
      <img src="/rzy.jpg"/>  #插入图片
   </body>
</html>
#保存退出
[root@rzy htdocs]# ll           #上传两种图片,名称分别改成网页中和配置文件中的图片名称
总用量 1076
-rw-r--r-- 1 root root 777473 415 17:48 1.jpg
-rw-r--r-- 1 root root     92 415 17:47 index.html
-rw-r--r-- 1 root root 316240 415 17:49 rzy.jpg
[root@rzy htdocs]# /usr/local/httpd/bin/apachectl start  #开启httpd

使用浏览器查看是否可以正常访问和显示图片(先把本机的hosts文件写入两个服务器的解析)

在这里插入图片描述

成功显示图片
在这里插入图片描述

  • rzy-02配置:
******(1)做基础配置
[root@rzy ~]# hostnamectl set-hostname rzy-02
[root@rzy ~]# su
[root@rzy-02 ~]# systemctl stop firewalld
[root@rzy-02 ~]# setenforce 0
setenforce: SELinux is disabled
[root@rzy-02 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
mount: /dev/sr0 已经挂载或 /mnt 忙
       /dev/sr0 已经挂载到 /mnt 上
       
******(2)上传源码包,进行配置编译安装
[root@rzy-02 ~]# ll
总用量 6448
-rw-------. 1 root root    1264 112 18:27 anaconda-ks.cfg
-rw-r--r--  1 root root 6597991 415 17:34 httpd-2.2.17.tar.gz
[root@rzy-02 ~]# tar xf httpd-2.2.17.tar.gz -C /usr/src/
[root@rzy-02 ~]# cd /usr/src/httpd-2.2.17/
[root@rzy-02 httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi 
[root@rzy-02 httpd-2.2.17]# make && make install 

******(3)添加hosts文件解析两个服务器
[root@rzy-02 httpd-2.2.17]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.202 www.rzy.com
192.168.100.203 www.rzy02.com

******(4)修改配置文件
[root@rzy-02 httpd-2.2.17]# vim /usr/local/httpd/conf/httpd.conf 
。。。。。。
 96 #
 97 ServerName www.rzy02.com:80
 98
。。。。。。
#保存退出

******(5)编辑网页跳转
[root@rzy-02 httpd-2.2.17]# cd /usr/local/httpd/htdocs/
[root@rzy-02 htdocs]# vim index.html 
<html>
   <body>
      <h1>It works!</h1>
      <img src="http://www.rzy.com/rzy.jpg" alt="访问被拒绝,对方设置了防盗链"> #访问失败就显示后面那行字
   </body>
</html>
#保存退出
[root@rzy-02 htdocs]# /usr/local/httpd/bin/apachectl start  #开启httpd

-测试

访问www.rzy.com

在这里插入图片描述

访问www.rzy02.com(这里已经成功跳转,因为已经显示出了提示语)

在这里插入图片描述

六、Apacheab压力测试

(1)ab压力测试的使用场景

  • 要对刚刚购买的二手服务器进行烧机
  • 在产品上线之前,对应用的一个压力测试
  • 对产品本身的压力测试

(2)ab压力测试的作用

Apache附带了压力测试工具ab,非常容易使用,并且完全可以模拟各种条件来对web服务器发起测试请求,在进行性能调整优化过程中,可以使用ab压力测试工具进行优化效果的测试

(3)使用ab测试工具

ab -n 请求数总和 -c 并发用户数 网站网址

[root@rzy ~]# /usr/local/httpd/bin/ab -n 1000 -c 100 http://192.168.100.202/index.html  
#表示100个用户总共发起1000个请求对192.168.100.202这个网站
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.100.202 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        Apache/2.2.17   #服务器版本
Server Hostname:        192.168.100.202  #服务器地址
Server Port:            80               #服务器端口

Document Path:          /index.html  #测试的资源
Document Length:        92 bytes
  
Concurrency Level:      100             #总共的用户数量
Time taken for tests:   0.073 seconds   #发送完请求总共使用的时间
Complete requests:      1000            #总共的请求数量
Failed requests:        0               #失败的请求数量
Write errors:           0       
Total transferred:      344000 bytes
HTML transferred:       92000 bytes
Requests per second:    13713.66 [#/sec] (mean)   #吞吐率,表示本次测试每秒可以相应请求的速度
Time per request:       7.292 [ms] (mean)
Time per request:       0.073 [ms] (mean, across all concurrent requests)
Transfer rate:          4606.93 [Kbytes/sec] received  #表示这些请求在单位时间内从服务器获取的数据长度

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.2      0       1
Processing:     1    7   1.2      7       8
Waiting:        1    7   1.2      7       8
Total:          2    7   1.0      7       8

Percentage of the requests served within a certain time (ms)
  50%      7
  66%      7
  75%      8
  80%      8
  90%      8
  95%      8
  98%      8
  99%      8
 100%      8 (longest request)

七、Apache访问控制

(1)作用

为apache服务提供的页面设置客户端访问权限,为某个组或者某个用户加密访问,即访问网页需要使用指定的用户名密码登录才可以正常进行访问

(2)配置Apache访问控制

-实验环境

系统版本ip地址主机名需要软件
Centos7.4192.168.100.202rzyhttpd-2.2.17.tar.gz

-实验步骤

******(1)做基础配置
[root@Centos7 ~]# hostnamectl set-hostname rzy
[root@Centos7 ~]# su
[root@rzy ~]# systemctl stop firewalld
[root@rzy ~]# setenforce 0
setenforce: SELinux is disabled
[root@rzy ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
mount: /dev/sr0 已经挂载或 /mnt 忙
       /dev/sr0 已经挂载到 /mnt 上

******(2)上传httpd的源码包,进行配置编译安装
[root@rzy ~]# ll
总用量 6448
-rw-------. 1 root root    1264 112 18:27 anaconda-ks.cfg
-rw-r--r--  1 root root 6597991 416 00:03 httpd-2.2.17.tar.gz
[root@rzy ~]# tar xf httpd-2.2.17.tar.gz -C /usr/src/
[root@rzy ~]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi && make && make install

******(3)使用htpasswd创建一个新用户
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/htpasswd -c /usr/local/httpd/conf/htpasswd rzy 
#添加管理员用户,可以在两个路径之间加-c,表示新建文件删除源文件
New password:      #输入密码
Re-type new password:   #再次输入密码
Adding password for user rzy  #表示创建成功
[root@rzy httpd-2.2.17]# cat /usr/local/httpd/conf/htpasswd  #查看创建的新文件,发现已经成功创建
rzy:MJOfj2b/2Gd72
[root@rzy conf]# /usr/local/httpd/bin/htpasswd /usr/local/httpd/conf/htpasswd aaa #再次创建一个新的用户
New password: 
Re-type new password: 
Adding password for user aaa
[root@rzy conf]# cat /usr/local/httpd/conf/htpasswd  #检查是否创建成功
rzy:MJOfj2b/2Gd72
aaa:/GzCGxxay0u96

******(4)修改配置文件
[root@rzy conf]# vim /usr/local/httpd/conf/htgroups  #创建新的组配置文件
rzygroup: rzy     #写入,表示这个组里有rzy,多个用户用空格隔开
[root@rzy conf]# vim /usr/local/httpd/conf/httpd.conf #修改主配置文件
。。。。。。
131 <Directory "/usr/local/httpd/htdocs">
132     Options None
133     AllowOverride None
134     Order allow,deny
135     Allow from all
136     AuthType Basic      #定义认证的类型为Basic
137     AuthName "aaaaaaaaa"  #提示短语
138     AuthBasicProvider file  #提供认证者为file,表示从文件中读取
139     AuthUserFile /usr/local/httpd/conf/htpasswd #指定认证用户文件
140     AuthGroupFile /usr/local/httpd/conf/htgroups #指定认证用户组文件
141     Require group rzygroup  #设置允许访问的用户或者组,想要要所有用户都可以访问则改成 require vaild-user,单个用户改成require user 即可
142 
143 </Directory>
144 
。。。。。。
#保存退出
[root@rzy conf]# /usr/local/httpd/bin/apachectl start  #开启httpd服务
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::34f4:cad:16ae:5b4d for ServerName #这个是因为没有设置域名
[root@rzy conf]# netstat -anput | grep 80 #检查端口
tcp6       0      0 :::80                   :::*                    LISTEN      66789/httpd   

-测试

在这里插入图片描述
在这里插入图片描述

测试aaa用户,发现只有在rzygroup组里的用户才可以访问

在这里插入图片描述
在这里插入图片描述

八、Apache优化之日志分割

(1)作用

随着网站的访问量的增加,访问日志中的信息会越来愈多,apache默认的访问日志access_log的体积会越来越大,信息都放在一个文件中,不管是查看还是分析都非常麻烦,所以需要把日志进行以天、月等时间进行分割

(2)优化apache日志分割

-实验环境

系统版本ip地址主机名需要软件
Centos7.4192.168.100.202rzyhttpd-2.2.17.tar.gz

apache的安装以及系统基础配置(略)

-方式一

利用apache自带的日志轮询程序rotatelogs日志分割

[root@rzy httpd-2.2.17]# vim /usr/local/httpd/conf/httpd.conf  #修改配置文件
。。。。。。
214     #
215     CustomLog "|/usr/local/httpd/bin/rotatelogs -l /usr/local/httpd/logs/access_%Y%m%d%H%M%S.log 10" common
#-l是小写的L表示local time当前时间,10表示10秒,这里是为了看出效果,一般都以一天86400来指定日志分割频率。access后面得分别表示年、月、日、时、分、秒
216 
。。。。。。
#保存退出
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/apachectl restart   #重启服务
#使用浏览器访问web服务器并且多次刷新,然后查看logs目录
[root@rzy httpd-2.2.17]# cd /usr/local/httpd/logs/
[root@rzy logs]# ll
总用量 20
-rw-r--r-- 1 root root 2010 416 00:52 access_20210416Apr5240.log  #这个就是分割的日志
-rw-r--r-- 1 root root  453 416 00:46 access_log
-rw-r--r-- 1 root root 7011 416 00:52 error_log
-rw-r--r-- 1 root root    7 416 00:51 httpd.pid
[root@rzy logs]# date 
2021年 04月 16日 星期五 00:53:19 CST

-方式二

利用一个发展已经比较成熟的日志轮询工具cronolog,比较推荐使用

#上传cronolog的源码包进行配置编译安装
[root@rzy ~]# ll
总用量 6580
-rw-------. 1 root root    1264 112 18:27 anaconda-ks.cfg
-rw-r--r--  1 root root  133591 416 00:58 cronolog-1.6.2.tar.gz
-rw-r--r--  1 root root 6597991 416 00:03 httpd-2.2.17.tar.gz
[root@rzy ~]# tar xf cronolog-1.6.2.tar.gz -C /usr/src/
[root@rzy ~]# cd /usr/src/cronolog-1.6.2/
[root@rzy cronolog-1.6.2]# ./configure && make && make install 
[root@rzy cronolog-1.6.2]# cd
[root@rzy ~]# which cronolog  #查看cronolog的命令路径,待会修改配置文件会使用
/usr/local/sbin/cronolog   
[root@rzy ~]# vim /usr/local/httpd/conf/httpd.conf  #修改配置文件
。。。。。。
214     #
215     CustomLog "|/usr/local/sbin/cronolog  /usr/local/httpd/logs/access_%Y%m%d.log " common  #cronolog默认的分割日志的时间间隔就是一天
216 
217     #
。。。。。。
#保存退出
[root@rzy ~]# /usr/local/httpd/bin/apachectl restart  #重启httpd
#使用浏览器再次访问并且多次刷新,可以先把方式一分割的日志删除
[root@rzy ~]# cd /usr/local/httpd/logs/ 
[root@rzy logs]# date 
2021年 04月 16日 星期五 01:03:55 CST
[root@rzy logs]# date -s 20210417  #修改时间
2021年 04月 17日 星期六 00:00:00 CST  
[root@rzy logs]# ll   #查看目录,发现多了一个日志
总用量 24
-rw-r--r-- 1 root root 2279 416 01:03 access_20210416.log 
-rw-r--r-- 1 root root  453 416 00:46 access_log
-rw-r--r-- 1 root root 9649 416 01:03 error_log
-rw-r--r-- 1 root root    7 416 01:02 httpd.pid

-方式三

利用脚本进行分割,不推荐使用(略)

(3)日志合并

可以将每个服务器每天的日志文件通过rsync下载到专门进行访问统计分析的服务器上进行合并。即合并多个服务器的日志文件这样既方便了查看也统一了数据

[root@rzy logs]# ll  
总用量 20
-rw-r--r-- 1 root root 1195 417 00:15 access_20210417.log
-rw-r--r-- 1 root root  906 418 00:00 access_20210418.log
-rw-r--r-- 1 root root  374 419 00:00 access_20210419.log
-rw-r--r-- 1 root root    0 417 00:05 access_log
-rw-r--r-- 1 root root 1453 419 00:00 error_log
-rw-r--r-- 1 root root    6 417 00:14 httpd.pid
#要想把这三个分割后的日志变成一个access_202104.log
[root@rzy logs]# sort -k 4 -o access_202104.log access_20210417.log access_20210418.log access_20210419.log 
[root@rzy logs]# ll
总用量 24
-rw-r--r-- 1 root root 1195 417 00:15 access_20210417.log
-rw-r--r-- 1 root root  906 418 00:00 access_20210418.log
-rw-r--r-- 1 root root  374 419 00:00 access_20210419.log
-rw-r--r-- 1 root root 2475 419 00:01 access_202104.log
-rw-r--r-- 1 root root    0 417 00:05 access_log
-rw-r--r-- 1 root root 1453 419 00:00 error_log
-rw-r--r-- 1 root root    6 417 00:14 httpd.pid

在这里插入图片描述

九、Apache实验虚拟主机

(1)作用

在同一台服务器中部署多个网站站点,节省资源

(2)实现的三种方式

  • 不同ip,相同端口,不同域名:基于IP
  • 相同ip,不同端口,相同域名:基于端口
  • 相同ip,相同端口,不同域名:基于域名

(3)配置apache虚拟主机

-实验环境

系统版本ip地址主机名需要软件域名
Centos7.4192.168.100.202rzyhttpd-2.2.17.tar.gzwww.rzy.com

-不同ip,相同端口,不同域名

******(1)基于ip地址的虚拟主机需要添加网卡,配置网卡地址(同网段)
[root@rzy ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:30:54:8c brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.202/24 brd 192.168.100.255 scope global ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::34f4:cad:16ae:5b4d/64 scope link 
       valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:30:54:96 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::e6e9:552d:5efd:87ac/64 scope link 
       valid_lft forever preferred_lft forever
[root@rzy ~]# cd /etc/sysconfig/network-scripts/
[root@rzy network-scripts]# cp ifcfg-ens32 ifcfg-ens34
[root@rzy network-scripts]# sed -i 's/192.168.100.202/192.168.100.203/g' ifcfg-ens34
[root@rzy network-scripts]# sed -i 's/ens32/ens34/g' ifcfg-ens34
[root@rzy network-scripts]# sed -i '/^UUID/d' ifcfg-ens34
[root@rzy network-scripts]# cat ifcfg-ens34
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.100.203
PREFIX=24
IPV6_PRIVACY=no
[root@rzy network-scripts]# systemctl restart network 
[root@rzy network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:30:54:8c brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.202/24 brd 192.168.100.255 scope global ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::34f4:cad:16ae:5b4d/64 scope link 
       valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:30:54:96 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.203/24 brd 192.168.100.255 scope global ens34
       valid_lft forever preferred_lft forever
    inet6 fe80::c237:66a8:bd78:82e5/64 scope link 
       valid_lft forever preferred_lft forever

******(2)修改配置文件
[root@rzy network-scripts]# vim /usr/local/httpd/conf/httpd.conf  #修改主配置文件
。。。。。。
 39 #Listen 12.34.56.78:80
 40 Listen 192.168.100.202:80    #添加两个网卡的地址,端口相同
 41 Listen 192.168.100.203:80
 42 
。。。。。。
 389 # Virtual hosts
 390 Include conf/extra/httpd-vhosts.conf   #去掉注释
 391 
。。。。。。
#保存退出
[root@rzy network-scripts]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf  #修改区域配置文件
。。。。。。
 18 #
 19 NameVirtualHost 192.168.100.202:80  #添加两快网卡的ip地址,端口号相同
 20 NameVirtualHost 192.168.100.203:80
 21 
。。。。。。  
 28 <VirtualHost 192.168.100.202:80>   #指定ip和端口
 29     ServerAdmin webmaster@dummy-host.example.com  #邮箱,没有需求的话不用修改
 30     DocumentRoot "/usr/local/httpd/htdocs/aaa/"   #指定网页目录
 31     ServerName www.aaa.com  #域名
 32     ServerAlias www.dummy-host.example.com    #别名,可以删除,或者重新写一个
 33     ErrorLog "logs/www.aaa.com-error_log"   #错误日志名称,路径
 34     CustomLog "logs/www.aaa.com-access_log" common   #访问日志名称,路径
 35 </VirtualHost>
 36 
 37 <VirtualHost 192.168.100.203:80>
 38     ServerAdmin webmaster@dummy-host2.example.com
 39     DocumentRoot "/usr/local/httpd/htdocs/bbb/"
 40     ServerName www.bbb.com
 41     ErrorLog "logs/www.bbb.com-error_log"
 42     CustomLog "logs/www.bbb.com-access_log" common
 43 </VirtualHost>
 44 
。。。。。。
#保存退出

******(3)写两个虚拟主机的网页
[root@rzy network-scripts]# cd /usr/local/httpd/htdocs/
[root@rzy htdocs]# ll
总用量 4
-rw-r--r-- 1 root root 44 1121 2004 index.html
[root@rzy htdocs]# mkdir aaa
[root@rzy htdocs]# mkdir bbb
[root@rzy htdocs]# echo 'aaaaaaaaaaa' > aaa/index.html
[root@rzy htdocs]# echo 'bbbbbbbbbbb' > bbb/index.html
[root@rzy htdocs]# /usr/local/httpd/bin/apachectl start 
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::34f4:cad:16ae:5b4d for ServerName #这个是因为没有修改域名
[root@rzy htdocs]# netstat -anpt | grep 80  #要有两个httpd才对
tcp        0      0 192.168.100.203:80      0.0.0.0:*               LISTEN      42359/httpd         
tcp        0      0 192.168.100.202:80      0.0.0.0:*               LISTEN      42359/httpd     

测试:

在这里插入图片描述
在这里插入图片描述

-相同ip,不同端口,相同域名

******(1)配置基于端口的虚拟主机,可以先把上一个的网卡关闭即可
[root@rzy htdocs]# ifdown ens34
成功断开设备 'ens34'。

******(2)只需要修改配置文件中的一些配置即可
[root@rzy htdocs]# vim /usr/local/httpd/conf/httpd.conf 
。。。。。。
 39 #Listen 12.34.56.78:80
 40 Listen 192.168.100.202:80    #ip相同,端口不一样
 41 Listen 192.168.100.202:8080
 42 
。。。。。。
389 # Virtual hosts
390 Include conf/extra/httpd-vhosts.conf  #去掉注释
391 
#保存退出

******(3)修改区域配置文件
[root@rzy htdocs]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
。。。。。。
 18 #
 19 NameVirtualHost 192.168.100.202:80   #修改相同ip不同端口
 20 NameVirtualHost 192.168.100.202:8080
 21 
。。。。。。
 28 <VirtualHost 192.168.100.202:80>
 29     ServerAdmin webmaster@dummy-host.example.com
 30     DocumentRoot "/usr/local/httpd/htdocs/aaa/"
 31     ServerName www.aaa.com
 32     ErrorLog "logs/www.aaa.com-error_log"
 33     CustomLog "logs/www.aaa.com-access_log" common
 34 </VirtualHost>
 35 
 36 <VirtualHost 192.168.100.202:8080>
 37     ServerAdmin webmaster@dummy-host2.example.com
 38     DocumentRoot "/usr/local/httpd/htdocs/bbb/"
 39     ServerName www.bbb.com
 40     ErrorLog "logs/www.bbb.com-error_log"
 41     CustomLog "logs/www.bbb.com-access_log" common
 42 </VirtualHost>
。。。。。。
#保存退出
[root@rzy htdocs]# /usr/local/httpd/bin/apachectl restart  #重新启动
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::34f4:cad:16ae:5b4d for ServerName
[root@rzy htdocs]# netstat -anpt | grep 80  #查看端口,有相同ip的不同端口即可,203的没有listen监听其实就是关闭的
tcp        0      0 192.168.100.202:8080    0.0.0.0:*               LISTEN      42359/httpd         
tcp        0      0 192.168.100.202:80      0.0.0.0:*               LISTEN      42359/httpd         
tcp        0      1 192.168.100.203:80      192.168.100.230:56461   FIN_WAIT1   -                   
tcp        0      1 192.168.100.203:80      192.168.100.230:56462   FIN_WAIT1   -   

测试:

在这里插入图片描述
在这里插入图片描述

-相同ip,相同端口,不同域名(使用最多)

******(1)修改区域配置文件和主配置文件即可
[root@rzy htdocs]# vim /usr/local/httpd/conf/httpd.conf 
。。。。。。
 40 Listen 192.168.100.202:80  #剩下一个即可
 41 
。。。。。。
#保存退出
[root@rzy htdocs]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
。。。。。。
 18 #
 19 NameVirtualHost 192.168.100.202:80  
 20 #NameVirtualHost 192.168.100.202:8080  #加注释不生效
 21 
 22 #
。。。。。。
 28 <VirtualHost 192.168.100.202:80>
 29     ServerAdmin webmaster@dummy-host.example.com
 30     DocumentRoot "/usr/local/httpd/htdocs/aaa/"
 31     ServerName www.aaa.com                #域名不相同就
 32     ErrorLog "logs/www.aaa.com-error_log"
 33     CustomLog "logs/www.aaa.com-access_log" common
 34 </VirtualHost>
 35 
 36 <VirtualHost 192.168.100.202:80>
 37     ServerAdmin webmaster@dummy-host2.example.com
 38     DocumentRoot "/usr/local/httpd/htdocs/bbb/"
 39     ServerName www.bbb.com
 40     ErrorLog "logs/www.bbb.com-error_log"
 41     CustomLog "logs/www.bbb.com-access_log" common
 42 </VirtualHost>
。。。。。。
#保存退出
[root@rzy htdocs]# /usr/local/httpd/bin/apachectl restart   #重启服务
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::34f4:cad:16ae:5b4d for ServerName
[root@rzy htdocs]# netstat -anpt | grep 80   #监听端口
tcp        0      0 192.168.100.202:80      0.0.0.0:*               LISTEN      42359/httpd  

测试:

修改本地hosts文件

在这里插入图片描述
在这里插入图片描述

十、统计访问量

(1)什么是PV、UV和VV

  • PV:是指页面点击量和浏览量

  • UV:指访问的客户端

  • VV:指统计所有访客一天内访问网站的次数

  • 9PV和UV一般都是指公司的

PV肯定是大于UV的!!!

(2)PV和VV的区别

例如: 小王中午打开了百度,访问了三个页面,下午打开了百度,访问了两个页面,则PV数+5,VV+2


(3)统计PV和UV的命令

******(1)根据访问ip统计UV访问的客户端的总数
[root@rzy logs]# awk '{print $1}' access_202104.log | sort | uniq -c | wc -l 
1

******(2)统计访问URL的点击量和浏览量
[root@rzy logs]# awk '{print $7}' access_202104.log | wc -l
33

******(3)查询访问最多的URL,即访问最多的资源
[root@rzy logs]# awk '{print $7}' access_202104.log |sort | uniq -c | sort -n -k1 -r | more
     26 /
      7 /favicon.ico
      
******(4)查询访问最多的ip地址
[root@rzy logs]# awk '{print $1}' access_202104.log | sort -rn | uniq -c | sort -rn | head -1
     33 192.168.100.230
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值