在开启apache服务器的长连接之后,当客户端请求完成之后,负责返回给客户端数据的进程并不会直接退出,而是等待客户端的下一个请求,这样做的主要目的就是减少TCP的三次握手,节省资源
系统版本 | ip地址 | 主机名 | 需要软件 |
---|---|---|---|
Centos7.4 | 192.168.100.202 | rzy | httpd-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 1月 12 18:27 anaconda-ks.cfg
-rw-r--r-- 1 root root 6597991 4月 15 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
apache的网页压缩功能,是使用Gzip压缩算法来对apache服务器发布的网页内容先进行压缩,然后再传输到客户端浏览器
通常在CPU有空闲,网站带宽占用高时,会启用压缩
客户端先请求httpd服务器的数据,httpd服务器再返回数据报给客户端时,会先对返回的数据进行压缩之后在进行传输
系统版本 | ip地址 | 主机名 | 需要软件 |
---|---|---|---|
Centos7.4 | 192.168.100.202 | rzy | httpd-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_gzip | mod_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
系统版本 | ip地址 | 主机名 | 需要软件 |
---|---|---|---|
Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz |
******(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
在真实环境中,公司是肯定不会想要别人知道自己用的什么web服务器,所以就需要隐藏web版本号
系统版本 | ip地址 | 主机名 | 需要软件 |
---|---|---|---|
Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz |
有两种方式进行隐藏,根据实际环境选择
******直接修改配置文件
[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
。。。。。。
#保存退出
修改前:
防盗链就是防止别人盗用服务器中的图片、文件、视频等相关资源。
!^ | 不以知道字段开头 |
---|---|
.*$ | 以任意字符结尾 |
NC | 不区分大小写 |
R | 强制跳转 |
规则匹配: 如果相应变量的值匹配所设置的规则,则逐条往下处理,如果不匹配则后面的规则不再继续匹配
系统版本 | ip地址 | 主机名 | 需要软件 | 域名 |
---|---|---|---|---|
Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz | www.rzy.com |
Centos7.4 | 192.168.100.203 | rzy-02 | httpd-2.2.17.tar.gz | www.rzy02.com |
防止rzy-02盗取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 1月 12 18:27 anaconda-ks.cfg
-rw-r--r-- 1 root root 6597991 4月 15 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 4月 15 17:48 1.jpg
-rw-r--r-- 1 root root 92 4月 15 17:47 index.html
-rw-r--r-- 1 root root 316240 4月 15 17:49 rzy.jpg
[root@rzy htdocs]# /usr/local/httpd/bin/apachectl start #开启httpd
使用浏览器查看是否可以正常访问和显示图片(先把本机的hosts文件写入两个服务器的解析)
******(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 1月 12 18:27 anaconda-ks.cfg
-rw-r--r-- 1 root root 6597991 4月 15 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(这里已经成功跳转,因为已经显示出了提示语)
Apache附带了压力测试工具ab,非常容易使用,并且完全可以模拟各种条件来对web服务器发起测试请求,在进行性能调整优化过程中,可以使用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服务提供的页面设置客户端访问权限,为某个组或者某个用户加密访问,即访问网页需要使用指定的用户名密码登录才可以正常进行访问
系统版本 | ip地址 | 主机名 | 需要软件 |
---|---|---|---|
Centos7.4 | 192.168.100.202 | rzy | httpd-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 1月 12 18:27 anaconda-ks.cfg
-rw-r--r-- 1 root root 6597991 4月 16 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默认的访问日志access_log的体积会越来越大,信息都放在一个文件中,不管是查看还是分析都非常麻烦,所以需要把日志进行以天、月等时间进行分割
系统版本 | ip地址 | 主机名 | 需要软件 |
---|---|---|---|
Centos7.4 | 192.168.100.202 | rzy | httpd-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 4月 16 00:52 access_20210416Apr5240.log #这个就是分割的日志
-rw-r--r-- 1 root root 453 4月 16 00:46 access_log
-rw-r--r-- 1 root root 7011 4月 16 00:52 error_log
-rw-r--r-- 1 root root 7 4月 16 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 1月 12 18:27 anaconda-ks.cfg
-rw-r--r-- 1 root root 133591 4月 16 00:58 cronolog-1.6.2.tar.gz
-rw-r--r-- 1 root root 6597991 4月 16 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 4月 16 01:03 access_20210416.log
-rw-r--r-- 1 root root 453 4月 16 00:46 access_log
-rw-r--r-- 1 root root 9649 4月 16 01:03 error_log
-rw-r--r-- 1 root root 7 4月 16 01:02 httpd.pid
利用脚本进行分割,不推荐使用(略)
可以将每个服务器每天的日志文件通过rsync下载到专门进行访问统计分析的服务器上进行合并。即合并多个服务器的日志文件这样既方便了查看也统一了数据
[root@rzy logs]# ll
总用量 20
-rw-r--r-- 1 root root 1195 4月 17 00:15 access_20210417.log
-rw-r--r-- 1 root root 906 4月 18 00:00 access_20210418.log
-rw-r--r-- 1 root root 374 4月 19 00:00 access_20210419.log
-rw-r--r-- 1 root root 0 4月 17 00:05 access_log
-rw-r--r-- 1 root root 1453 4月 19 00:00 error_log
-rw-r--r-- 1 root root 6 4月 17 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 4月 17 00:15 access_20210417.log
-rw-r--r-- 1 root root 906 4月 18 00:00 access_20210418.log
-rw-r--r-- 1 root root 374 4月 19 00:00 access_20210419.log
-rw-r--r-- 1 root root 2475 4月 19 00:01 access_202104.log
-rw-r--r-- 1 root root 0 4月 17 00:05 access_log
-rw-r--r-- 1 root root 1453 4月 19 00:00 error_log
-rw-r--r-- 1 root root 6 4月 17 00:14 httpd.pid
在同一台服务器中部署多个网站站点,节省资源
系统版本 | ip地址 | 主机名 | 需要软件 | 域名 |
---|---|---|---|---|
Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz | www.rzy.com |
******(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 [email protected] #邮箱,没有需求的话不用修改
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 [email protected]
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 11月 21 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
测试:
******(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 [email protected]
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 [email protected]
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 -
测试:
******(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 [email protected]
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 [email protected]
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文件
PV:是指页面点击量和浏览量
UV:指访问的客户端
VV:指统计所有访客一天内访问网站的次数
9PV和UV一般都是指公司的
PV肯定是大于UV的!!!
例如: 小王中午打开了百度,访问了三个页面,下午打开了百度,访问了两个页面,则PV数+5,VV+2
******(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