Apache的配置与应用以及日志管理
一、Apache连接和访问控制
1、Apache连接
Apache通过设置配置文件或者虚拟主机配置文件中相关的连接保持参数来开启与控制连接保持功能,如TCP的三次握手和四次挥手过程。
【1】KeepAlive
决定是否打开连接保持功能,后面接on表示开启,接off表示关闭。可以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能。
【2】KeepAlive Timeout
表示一次连接多次请求之间的最大时间间隔,超过间隔时间就会断开,从而避免客户端占用连接资源。
【3】MaxKeepAliveTimeout
表示一次长连接能够传输最大请求数量。
【4】部署keepalive优化连接
[root@promote ~]# yum install -y httpd
[root@promote ~]# vim /etc/httpd/conf/httpd.conf
KeepAlive on
#KeepAlive off
KeepAliveTimeout 600
[root@promote ~]# systemctl restart httpd.service
2、Apache的访问控制
为了控制网站的资源访问,可以为特定的网站目录添加访问授权
【1】客户机地址的限制
使用Require配置项实现访问控制,按先后顺序限制,可用于、、、配置段中。Require配置项中常见的语法:
Require all granted
Require all denied
Require local
Require [not] host <主机名或者域名列表>
Require [not] ip <IP地址或网段列表>
配置举例:
[root@promote ~]# vim /etc/httpd/conf/httpd.conf
<Directory />
AllowOverride none
<RequireAll>
Require not ip 192.168.60.0/24
Require all denied
</RequireAll>
</Directory>
[root@promote ~]# systemctl restart httpd.service
注意:使用not禁止访问时要将其置于容器中指定相应的限制策略。
【2】用户授权限制
(1)创建用户认证数据库htpasswd
[root@promote ~]# which htpasswd
/usr/bin/htpasswd
[root@promote ~]# htpasswd -c /etc/httpd/conf/pwd tom
New password: (添加访问密码)
Re-type new password:
Adding password for user tom
[root@promote ~]# cd /etc/httpd/conf/
[root@promote conf]# ls
httpd.conf magic pwd
(2)添加用户授权配置
[root@promote ~]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html/"
<Directory "/var/www/html">
#名称
AuthName "DocumentRoot"
#基本验证
AuthType basic
#验证密码存放路径
AuthUserFile /etc/httpd/conf/pwd
#允许身份验证
Require valid-user
</Directory>
(3) 访问验证
设置之后需要输入访问的用户和密码进行访问
二、Apache日志管理
1、日志分割
【1】分割原因
随着网站的访问量增加,默认情况下Apache单个日志文件也会越来越大----日志文件占用的磁盘空间大,查看相关信息不方便,所以要对日志文件进行分割,只要使用的工具是Apache自带的rotatelogs和第三方工具cronlog。
【2】部署日志分割
(1)rotatelogs分割
在实际的环境中,一个服务器绝大多数对应N个子域名站点,为了方便统一管理,可以用虚拟主机的方式进行配置,并使用网站名表示日志文件。
在http配置文件中修改两行配置文件即可实现rotatelogs分割
ServerName www.test.com:80
Listen 192.168.60.60:80
ErrorLog "| /usr/sbin/rotatelogs -l logs/www.test.com.error_%Y%m%d.log 86400"
CustomLog "| /usr/sbin/rotatelogs -l logs/www.test.com.access_%Y%m%d.log 86400" combined
进入该目录查看日志
[root@localhost httpd]# ls -l /var/log/httpd/
总用量 16
-rw-r--r--. 1 root root 11484 8月 5 19:24 www.test.com.access_20200805.log
-rw-r--r--. 1 root root 632 8月 5 19:26 www.test.com.error_20200805.log
(2)cronlog分割
cronolog是分割网站日志文件的工具,配置格式:
ErrorLog "| cronolog命令的绝对路径 日志文件的路径/网站名-error_%Y%m%d.log"
CustomLog "| cronolog命令的绝对路径 日志文件的路径/网站名-access_%Y%m%d.log" combined
部署安装步骤:
【1】上传安装
[root@localhost opt]# rz -E
rz waiting to receive.
[root@localhost opt]# ls
awstats-7.6.tar.gz cronolog-1.6.2-14.el7.x86_64.rpm
[root@localhost opt]# rpm -ivh cronolog-1.6.2-14.el7.x86_64.rpm
警告:cronolog-1.6.2-14.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:cronolog-1.6.2-14.el7 ################################# [100%]
[root@localhost opt]# which cronolog
/usr/sbin/cronolog
【2】修改配置文件
[root@localhost opt]# cd /etc/httpd/conf
[root@localhost conf]# ls
httpd.conf magic
[root@localhost conf]# vim httpd.conf
ServerName www.test.com:80
Listen 192.168.60.10:80
ErrorLog "| /usr/sbin/cronolog logs/www.test.com.error_%Y%m%d.log"
CustomLog "| /usr/sbin/cronolog logs/www.test.com.access_%Y%m%d.log" combined
[root@localhost conf]# systemctl start httpd.service
[root@localhost conf]# cd /var/log/httpd/
[root@localhost httpd]# ls
www.test.com.access_20200806.log www.test.com.error_20200806.log
2、AWStats日志分析
【1】AWStats日志分析介绍
AWStats是一款由Perl语言开发的开源日志分析系统,可用来分析Apache、Samba、vsftpd、IIS等服务器的访问日志,结合crond等计划任务服务,可对日志内容定期进行分析。
【2】部署AWStats
(1)安装AWStats软件包
[root@localhost opt]# tar zxvf awstats-7.6
[root@localhost opt]# ls
awstats-7.6 awstats-7.6.tar.gz
[root@localhost opt]# mv awstats-7.6 /usr/local/awstats
(2)为要统计的站点建立配置文件
[root@localhost opt]# cd /usr/local/awstats/
[root@localhost awstats]# ls
docs README.md tools wwwroot
[root@localhost awstats]# cd tools/
[root@localhost tools]# ./awstats_configure.pl
............................................................
Config file path ('none' to skip web server setup):
> /etc/httpd/conf/httpd.conf
............................................................
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y
...............................................................
Your web site, virtual server or profile name:
> www.test.com
...............................................................
#一直回车到完成
You can also read your statistics for 'www.test.com' with URL:
> http://localhost/awstats/awstats.pl?config=www.test.com
(3)开启模块控制,添加控制语段
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
查看http配置文件再末行会自动添加下面内容
(4)修改AWStats站点统计配置文件
[root@localhost awstats]# cd /var/log/httpd/
[root@localhost httpd]# ls
www.test.com.access_20200806.log www.test.com.error_20200806.log
[root@localhost ~]#cd /etc/awstats
[root@localhost awstats]# vim awstats.www.test.com.conf
DirData="/var/lib/awstats"
LogFile="/var/log/httpd/www.test.com.access_20200806.log"
[root@localhost awstats]# cd /var/lib/
[root@localhost lib]# mkdir awstats
[root@localhost lib]# systemctl restart httpd
(5)测试及优化
再次刷新页面模拟访问
但问题是AWStats没有自动统计
分析:是没有刷新AWStats系统,所以没有显示
[root@localhost awstats]# cd /usr/local/awstats/tools/
[root@localhost tools]# ./awstats_updateall.pl now
解决并优化:
为了让系统实现自动的优化,所以我们使用crontab任务计划,让它买几分钟执行刷新脚本
/usr/local/awstats/tools/awstats_updateall.pl now
[root@localhost tools]# crontab -e
*/1 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
这样就能实现自动更新
(6)访问网址的优化
实现这个功能需要使用dns服务功能。
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# vim aws.html
<html>
<head>
<meta http-equiv=refresh content="0;url=http://www.test.com/awstats/awstats.pl?config=www.test.com">
</head>
<body></body>
</html>
[root@localhost html]# systemctl restart httpd.service