企业平台架构--Apache配置与应用(Apache的访问控制(KeepAlive),日志分割(rotatelogs和cronolog)实操,日志分析(AWStats)实操

前言

  • Apache HTTP Server 之所以受到众多企业的青睐,得益于其代码开源,跨平台,功能模块化,可灵活定制等诸多优点,其不仅性能稳定,在安全性方面的表现也十分出色

一:Apache配置详解

1.1:Apache连接保持

1.1.1:为什么要保持连接

  • HTTP协议是基于TCP协议之上的,在进行HTTP连接之前,要先进行TCP连接,每个TCP连接都要进行三次握手与四次挥手。建立与关闭连接对于HTTP协议而言会消耗很多的内存与CPU资源。
  • 解决办法是HTTP连接保持。就是尽量地保持客户端的连接,通过一个TCP连接传送多个HTTP请求响应,对于客户端可以提高50%以上的响应时间,对于服务器可以降低建立与关闭连接时的资源消耗。

1.1.2:保持连接的方式

  • Apache连接保持相关参数

  • KeepAlive

    • 是否打开连接保持,OFF关闭,ON打开
  • KeepAliveTimeout

    • 一次连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开
  • MaxKeepAliveRequests

    • 一次连接能够传输的最大请求数量

1.2:Apache访问控制

1.2.1:Apache访问控制概述

  • 作用
    • 控制对网站资源的访问
    • 为特定的网站目录添加访问授权
  • 常用访问控制方式
    • 客户机地址限制
    • 用户授权限制

1.2.2:基于客户端地址的访问控制

  • 使用Require配置项实现访问控制,按先后顺序限制
- 可用<Location><Directory><Files><Limit>配置段中
  • Require配置项的常见语法
Require all granted
Require all denied
Require local
Require [not] host <主机名或域名列表>
Require [not] ip <IP地址或网段列表>
'使用not禁止访问时要将其置于<RequireAll></RequireAll>容器中,并在容器中指定相对应的限制策略'
  • 实验举例
[root@localhost ~]# cd /etc/httpd/conf
[root@localhost conf]# ls
httpd.conf  magic
[root@localhost conf]# mkdir extra
[root@localhost conf]# cd extra
[root@localhost extra]# vim vhost.conf
<VirtualHost 20.0.0.47:80>
        DocumentRoot "/var/www/html/kevin"
        ErrorLog "logs/www.kevin.com.error_log"
        CustomLog "logs/www.kevin.com.access_log" common
        <Directory> "/var/www/html">
        <RequireAll>
                Require not ip 20.0.0.50           '表示不允许ip20.0.0.50访问'
                Require all granted 
        </RequireAll>
        </Directory>
</VirtualHost>

1.2.3:用户授权限制–创建用户认证数据库

  • 创建用户认证数据库
  命令基本格式
  'htpasswd命令是httpd自带的'
  htpasswd -c /etc/httpd/conf/abc webadmin 			'为用户webadmin创建密码文件'
  New password:															'输入密码'
  Re-type new password:											'重复输入密码'
  cat  /etc/httpd/conf/abc
  webadmin:加密密码
  • 实验举例
[root@localhost abc]# htpasswd -c /etc/httpd/conf/aaa ddd
New password: 
Re-type new password: 
Adding password for user ddd
[root@localhost abc]# cat /etc/httpd/conf/aaa
ddd:$apr1$zwIklPGy$ZINaIkXsSq36oIk2lAiiJ1
    '添加第二个用户'
[root@localhost abc]# htpasswd /etc/httpd/conf/aaa bbb
New password: 
Re-type new password: 
Adding password for user bbb
[root@localhost abc]# cat /etc/httpd/conf/aaa
ddd:$apr1$zwIklPGy$ZINaIkXsSq36oIk2lAiiJ1
bbb:$apr1$q7OdS8z1$ELGg2a1AhHP.QfXJXfQTQ1

1.2.4:用户授权限制–添加用户授权配置

'配置基本格式'
  <Directory "/var/www/html">
  AuthName "DocumentRoot"  			'受保护的领域名称'
  AuthType Basic										'认证类型'
  AuthUserFile /etc/httpd/conf/pwd  				'用户认证账号文件'
  Require valid-user  								'要求通过认证才能访问'
  </Directory>
  • 实验举例
[root@localhost extra]# vim vhost.conf
<VirtualHost 20.0.0.48:80>
        DocumentRoot "/var/www/html/kevin01"
        ErrorLog "logs/www.kevin01.com.error_log"
        CustomLog "logs/www.kevin01.com.access_log" common
        <Directory> "/var/www/html">
                AuthName "DocumentRoot"
                AuthType basic
                AuthUserFile /etc/http/conf/pwd
                Require valid-user
        </Directory>
</VirtualHost>

二:Apache日志管理

2.1:日志分割

  • 随着网站的访问量增大,默认情况下Apache的单个日志文件也会越来越大
    • 日志文件占用磁盘空间很大
    • 查看相关信息不方便
  • 对日志文件进行分割
    • Apache自带rotatelogs分割工具实现
    • 第三方工具cronolog分割

2.2:rotatelogs分割工具

  • 配置网站的日志文件转交给rotatelogs分割处理
  • 配置格式为
ErrorLog "| rotatelogs 命令的绝对路径 -l 日志文件路径/网站名-error_%Y%m%d.log 86400"	'//which rotatelogs命令查看绝对路径,%Y%m%d表示年月日,86400表示一天的秒数'
CustomLog "| rotatelogs 命令的绝对路径 -l 日志文件路径/网站名-access_%Y%m%d.log 86400" combined 
例如
[root@localhost logs]vim /etc/httpd/conf/httpd.conf
ErrorLog "| /usr/sbin/rotatelogs -l logs/error_%Y%m%d.log 86400"
CustomLog "| /usr/sbin/rotatelogs -l logs/access_%Y%m%d.log 86400" combined 

实际生产环境中,一个服务器绝大多数对应N个子域名站点,为了方便统一管理,可以用虚拟主机的方式进行配置,并用网站名标识日志文件

2.2.1:日志文件的产生

  • 服务安装后,不会生成日志文件不会产生
  • 服务启动后,生成日志文件
  • 访问服务后,日志文件会生成内容

2.2.2:实验配置

[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# which rotatelogs
/usr/sbin/rotatelogs
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
ServerName www.kevin.com:80           '修改域名'
Listen 20.0.0.47:80						'修改监听端口'
#Listen 80								'关闭ipv6监听端口'
[root@localhost ~]# systemctl start httpd.service 
[root@localhost ~]# netstat -ntap | grep 80       '查看80端口'
tcp        0      0 20.0.0.47:80            0.0.0.0:*            LISTEN      11645/httpd 
[root@localhost ~]# ls /var/log/httpd/
access_log  error_log
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
'搜索ErrorLog,修改为以下内容'
ErrorLog "| /usr/sbin/rotatelogs -l logs/www.kevin.com.error_%Y%m%d.log 86400"
'搜索CustomLog,修改为以下内容'
CustomLog "| /usr/sbin/rotatelogs -l logs/www.kevin.com.access_%Y%m%d.log 86400" common
[root@localhost ~]# systemctl restart httpd.service 
[root@localhost ~]# httpd -t
Syntax OK
[root@localhost ~]# ls /var/log/httpd/
[root@localhost ~]# date -s 09/05/20
2020 09 05 星期六 00:00:00 CST
[root@localhost ~]# ls /var/log/httpd/
access_log  www.kevin.com.access_20200805.log  www.kevin.com.error_20200805.log
error_log   www.kevin.com.access_20200905.log  www.kevin.com.error_20200905.log

2.3:cronolog分割工具

  • 基于上一个实验配置
[root@localhost ~]#cd /opt
cronolog-1.6.2-14.el7.x86_64.rpm         '安装cronolog工具'
[root@localhost ~]#rpm -ivh cronolog-1.6.2-14.el7.x86_64.rpm         '解压缩工具包'
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
ErrorLog "| /usr/sbin/cronolog logs/www.kevin.com.error_%Y%m%d.log"
CustomLog "| /usr/sbin/cronolog logs/www.kevin.com.access_%Y%m%d.log" combined
[root@localhost opt]# systemctl restart httpd

2.4:AWStats日志分析

2.4.1:AWStats概述

  • perl语言(骆驼语言)开发的一款开源日志分析系统
  • 可用来分析Apache,Samba,vsftpd,IIS等服务器的访问日志
  • 信息结合crond等计划任务服务,可对日志内容定期进行分析

2.4.2:部署AWStats环境准备

  • 实验环境

    VMware软件

    一台centos7虚拟机

    一台Windows虚拟机

  • 环境准备

    WindowsDNS解析地址指向centos7

    centos7安装bind和httpd

2.4.3:部署AWStats过程

  • 配置dns服务
[root@localhost opt]# yum install httpd bind -y
[root@localhost opt]# vim /etc/named.conf 
options {        
				listen-on port 53 { any; };	  	'修改成any'       
				 ...省略内容       
				 allow-query     { any; };				'修改成any'
[root@localhost opt]# vim /etc/named.rfc1912.zones 
zone "kevin.com" IN {
        type master;
        file "kevin.com.zone";
        allow-update { none; };
};
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost kevin.com.zone
[root@localhost named]# vim kevin.com.zone 
www IN  A       20.0.0.47
  • 配置httpd
[root@localhost named]# vim /etc/httpd/conf/httpd.conf
ServerName www.kevin.com:80
Listen 20.0.0.47:80
#Listen 80
  • 修改网页信息
[root@localhost named]# cd /var/www/html/
[root@localhost html]# vim index.html
<h1>this is test</h1>
[root@localhost html]# systemctl restart named
[root@localhost html]# systemctl restart httpd
[root@localhost html]# iptables -F
[root@localhost html]# setenforce 0
  • 安装AWStats
awstats-7.6.tar.gz
[root@localhost html]# mv awstats-7.6.tar.gz /opt
[root@localhost html]# cd /opt/
[root@localhost opt]# tar zxvf awstats-7.6.tar.gz 
[root@localhost opt]# mv awstats-7.6 /usr/local/awstats
[root@localhost opt]# cd /usr/local/
[root@localhost local]# cd awstats/tools/
[root@localhost tools]# ./awstats_configure.pl 
Config file path ('none' to skip web server setup):
> /etc/httpd/conf/httpd.conf //输入配置文件
> Your web site, virtual server or profile name:
> www.benet.com
> //输入域名
> 其他全部是y或者回车

在这里插入图片描述

  • 修改主配置文件
[root@localhost tools]# vim /etc/httpd/conf/httpd.conf 
<Directory "/usr/local/awstats/wwwroot">
    Options None
    AllowOverride None
#    Order allow,deny       '注释掉'
#    Allow from all			gt'注释掉'
    Require all granted 			'添加这行内容'
</Directory>
[root@localhost tools]# cd /etc/awstats/
[root@localhost awstats]# ls
awstats.www.kevin.com.conf
[root@localhost awstats]# vim awstats.www.kevin.com.conf 
LogFile= "/var/log/httpd/access log"
//修改访问日志文件位置
DirData=' "/var/lib/awstats"
//awstats默认不存在(需要创建)
[root@localhost awstats]# cd /var/lib/
[root@localhost lib]# mkdir awstats
service httpd restart

在这里插入图片描述

  • 计划性任务更新数据
[root@localhost tools]# crontab -e
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
  • 更新数据
http://20.0.0.51/awstats/awstats.pl?config=www.kevin.com
[root@localhost named]# cd /usr/local/awstats/tools
[root@localhost tools]# ./awstats_updateall.pl now      更新数据

在这里插入图片描述

  • 优化网页地址
[root@localhost tools]# cd /var/www/html
[root@localhost html]# vim aws.html
<html>
<head>
<meta http-equiv=refresh content= "0;url= http://www.kevin.com/awstats/awstats.pl?config=www.kevin.com">
</head>
<body> </body>
</html>

http://www.kevin.com/aws.html 使用此地址直接访问
在这里插入图片描述

©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页