Apache的多种形态的配置和应用

本文详细介绍了Apache服务器的配置,包括虚拟主机、连接保持参数、访问控制以及日志分割。重点讲解了如何通过虚拟主机实现权限管理,以及利用rotatelogs和cronolog工具进行日志分割。同时,还介绍了如何部署AWStats进行日志分析,以获取网站访问统计信息。
摘要由CSDN通过智能技术生成

1. 虚拟主机

在apache应用过程中,管理员经常需要对apache下的目录做一些限制,不希望所有用户都能访问该目录下的文件,只对指定用户访问,此时我们就要用到apache的权限功能。通过虚拟主机的方式,实现以不同的网卡,不同ip,提供多个服务(三种方式:基于域名、基于ip、基于端口,也可以混合搭建)。
————————————————
版权声明:本文为CSDN博主「今日上上签、」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_55299423/article/details/118068939

1…1 Apache连接保持相关参数

KeepAlive:决定是否打开连接保持功能,后面接 OFF 表示关闭,接 ON 表示打开。
KeepAliveTimeout:表示一次连接多次请求之间的最大间隔时间,即两次请求之间超过该时间连接就会自动断开,从而避免客户端占用连接资源。
MaxKeepAliveRequests:用于设置在一次长连接中可以传输的最大请求数量,超过此最大请求数量就会断开连接。

1.12 主要特点

开放源代码:这是Apache服务器的重要特性之一,也是其他特性的基础
跨平台应用:Apache服务器的跨平台特性使其具有被广泛应用的条件
支持各种Web编程语言:这种特性使得Apache具有更广泛的应用领域
模块化设计:这为Apache服务器带来了良好的扩展性
运行非常稳定:可用于构建具有大负载的Web站点
良好的安全性:这是开源软件共同具有的特性

1.2 连接保持示例

我的实验建立在虚拟主机上,也可以讲连接保持的语句放在httpd的主配置文件/etc/httpd/conf/httpd.conf(yum安装,手工编译安装的位置是自己定义)

[root@localhost extra]# vim /etc/httpd/conf/extra/vhost.conf
   KeepAlive on
   KeepAlive Timeout 600

在这里插入图片描述

1.3 Apache访问控制

Apache访问控制可以更好地控制对网站资源的访问,为特定的网站目录添加访问授权;常见的方式有客户机地址限制、用户授权限制两种范围控制方式。

1.3.1 客户机地址限制

通过 Require 配置项,可以根据客户端的主机名或 IP 地址来决定是否允许客户端访问。可用于< Location >、< Directory >、< Files >、< Limit >配置段中,使用 Require 配置项时,需要设置客户端地址以构成完整的限制策略,地址形式可以是 IP 地址、网络地址、主机名或域名。当 Require 配置项之后为“all”时,表示匹配任意地址。

Requireall granted:允许所有主机访问;
Requireall denied:拒绝所有主机访问;
Requirelocal:仅允许本地主机访问;
Require[not] host <主机名或域名列表>:允许或拒绝指定主机或域名访问;
Require[not] ip <IP 地址或网段列表>:允许或拒绝指定 IP 地址网络访问。

策略格式

<Directory "/usr/local/httpd/htdocs">
 …… //省略部分内容
Require all granted 
</Directory>

1.3.2 地址限制示例

[root@localhost ~]# cd /etc/httpd/conf/rxtra
[root@localhost extra]# vim vhost.conf
<VirtualHost 14.0.0.14:80>
   DocumentRoot "/var/www/html/benet"
   ErrorLog "logs/www.benet.com.error_log"
   CustomLog "logs/www.benet.com.access_log" common
   <Directory "/var/www/html">
      <RequireAll>
         Require no ip 14.0.0.100    ##限制14.0.0.100这个IP地址访问
         Require all granted
      </RequireAll>
   </Directory>
</VirtualHost>

<VirtualHost 14.0.0.110:80>
   DocumentRoot "/var/www/html/benet03"
   ErrorLog "logs/www.benet03.com.error_log"
   CustomLog "logs/www.benet03.com.access_log" common
   <Directory "/var/www/html">
      Require all granted
   </Directory>
</VirtualHost>

在这里插入图片描述

1.4 用户授权限制

基于用户的访问控制包含认证(Authentication)和授权(Authorization)两个过程。
认证是指识别用户身份的过程,授权是指允许特定用户访问特定目录区域的过程。

1.4.1 创建用户认证数据文件

httpd 的基本认证通过校验用户名、密码组合来判断是否允许用户访问。授权访问的用 户账号需要事先建立,并保存在固定的数据文件中。使用专门的 htpasswd工具程序,可以创建授权用户数据文件,并维护其中的用户账号。

使用 htpasswd 工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文 件。使用 htpasswd 工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文 件。

[root@localhost ~]# cd /etc/httpd/conf
[root@localhost conf]# htpasswd -c /etc/httpd/conf/pwd webuser   ##创建一个用户webuser
New password:    ##设置密码
Re-type new password:    
Adding password for user webuser
[root@localhost conf]# ls
extra  httpd.conf  magic  pwd  
[root@localhost conf]# cat pwd
webuser:$apr1$Udu58vF6$adUe6xS4bFP9d/wW2RllI1   ##产生的密钥文件

1.4.2 添加用户授权配置
AuthName:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。
AuthType:设置认证的类型,Basic 表示基本认证。
AuthUserFile:设置用于保存用户账号、密码的认证文件路径。
requirevalid-user:要求只有认证文件中的合法用户才能访问。其中,valid-user 表示所有合法用户,若只授权给单个用户,可改为指定的用户名(如 webadmin)。

```go
[root@localhost conf]# vim extra/vhost.conf 
<VirtualHost 14.0.0.110:80>
   DocumentRoot "/var/www/html/benet03"
   ErrorLog "logs/www.benet03.com.error_log"
   CustomLog "logs/www.benet03.com.access_log" common
   <Directory "/var/www/html">
      AuthName "DocumentRoot"
      AuthType basic
      AuthUserFile /etc/httpd/conf/pwd   ##指明密钥文件路径
      Require valid-user
   </Directory>
</VirtualHost>
[root@localhost conf]# systemctl restart httpd

在这里插入图片描述

在win10中进行登陆验证
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、 Apache日志分割

随着网站的访问量越来越大,默认情况下 Apache 服务器产生的单个日志文件也会越来越大,庞大的日志数据量不仅会占用较大的资源,还不方便运维人员对问题进行精确定位,所以我们会将 Apache 的日志进行按每天的日期自动分割。

2.1 Apache 自带 rotatelogs 分割工具

Apache配置网站的日志文件转交给 rotatelogs分割处理。

[root@localhost ~]# yum install httpd -y
[root@localhost ~]# cd /opt
[root@localhost opt]# vim /etc/httpd/conf/httpd.conf 

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

[root@localhost opt]# systemctl restart httpd
[root@localhost opt]# ls /var/log/httpd/
access_log  error_log   ##这个时候还没有进行日志分割
[root@localhost httpd]# which rotatelogs    ##查看rotatelogs命令的绝对路径
/usr/sbin/rotatelogs
[root@localhost httpd]# vim /etc/httpd/conf/httpd.conf 
CustomLog "| /usr/sbin/rotatelogs -l logs/www.heiheihei.com-access_%Y%m%d.log 86400" combined
ErrorLog "| /usr/sbin/rotatelogs -l logs/www.heiheihei.com-error_%Y%m%d.log 86400"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ErrorLog 行是错误日志, -l 表示使用本地时间代替 GMT 时间作为时间基准。CustomLog 行是定义访问日志格式,86400 表示一天,即每天生成一个新的日志文件。当我们使用data命令更改时间后,日志文件的时间也同样会改变。

[root@localhost httpd]# iptables -F
[root@localhost httpd]# setenforce 0
[root@localhost httpd]# systemctl restart httpd
[root@localhost httpd]# ls /var/log/httpd/
access_log  error_log  www.heiheihei.com-error_20200805.log

在win10中访问网页,就会出现access日志文件,随着你刷新次数的增加,日志文件的大小也随之增加。
在这里插入图片描述

[root@localhost httpd]# ls /var/log/httpd/
access_log  www.heiheihei.com-access_20200805.log
error_log   www.heiheihei.com-error_20200805.log

2.2 第三方工具 cronolog 分割

[root@localhost ~]# cd /opt
[root@localhost opt]# ls
rh
将第三方工具 cronolog 软件包拷贝到当前目录下
[root@localhost opt]# ls
cronolog-1.6.2-14.el7.x86_64.rpm  rh
[root@localhost opt]# rpm -ivh cronolog-1.6.2-14.el7.x86_64.rpm    ##使用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   ##查看cronolog命令路径
/usr/sbin/cronolog
[root@localhost opt]# vim /etc/httpd/conf/httpd.conf
  CustomLog "| /usr/sbin/cronolog  logs/www.heiheihei.com-access_%Y%m%d.log" combined
  ErrorLog "| /usr/sbin/cronolog logs/www.heiheihei.com-error_%Y%m%d.log "
[root@localhost opt]# iptables -F
[root@localhost opt]# setenforce 0

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

如果之前做了apache自带的日志分割,在进行cronolog日志分割的时候需要把之前的日志文件删除,便于区分

[root@localhost opt]# cd /var/log/httpd
[root@localhost httpd]# rm -rf www*
[root@localhost opt]# systemctl restart httpd
[root@localhost httpd]# systemctl restart httpd
[root@localhost httpd]# ls
access_log  error_log  www.heiheihei.com-error_20200806.log

在win10中继续访问,再查看是否产生进程日志。
在这里插入图片描述
这时候再来查看日志

[root@localhost httpd]# ls   ##这里我已经在日志目录下,做实验需要注意
access_log  error_log  www.heiheihei.com-access_20200806.log  www.heiheihei.com-error_20200806.log

三、 AWStats 日志分析

在 httpd 服务器的访问日志文件 access_log 中,记录了大量的客户机访问信息,通过分析这些信息,我们可以得到每天的访问量、访问人数高峰时段等消息。

3.1 部署 AWStats 分析系统

AWStats是使用Perl语言开发的一款开源日志分析系统,它不仅可用来分析Apache 网 站服务器的访问日志,也可以用来分析 Samba、Vsftpd、 IIS 等服务的日志信息。结合 crond等计划任务服务,可以对不断增长的日志内容定期进行分析。

3.1.1 部署DNS服务

[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install bind httpd -y
接下来开始DNS配置 
[root@localhost ~]# vim /etc/named.conf   

在这里插入图片描述

[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "benet.com" IN {
        type master;
        file "benet.com.zone";
        allow-update { none; };
};

在这里插入图片描述

[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost benet.com.zone
[root@localhost named]# vim benet.com.zone 
www IN  A       14.0.0.27
[root@localhost named]# systemctl start named

在这里插入图片描述
在win10虚拟机中,改一下DNS服务器IP地址,并测试域名解析服务
在这里插入图片描述
在这里插入图片描述
[root@localhost named]# vim /etc/httpd/conf/httpd.conf

在这里插入图片描述
在这里插入图片描述
[root@localhost named]# vim /var/www/html/index.html ##写一个网页首页便于测试

this is a web

[root@localhost named]# systemctl start httpd

测试网页是否能被访问

在这里插入图片描述

3.1.2 为要统计的站点建立配置文件

[root@localhost named]# cd /opt
[root@localhost opt]# ls
awstats-7.6.tar.gz  rh
[root@localhost opt]# tar zvxf awstats-7.6.tar.gz
[root@localhost opt]# mv /opt/awstats-7.6 /usr/local/awstats
[root@localhost opt]# cd /usr/local/awstats/tools/

[root@localhost tools]# ./awstats_configure.pl

省略部分没用的内容
Enter full config file path of your Web server.
Example: /etc/httpd/httpd.conf
Example: /usr/local/apache2/conf/httpd.conf
Example: c:\Program files\apache group\apache\conf\httpd.conf
Config file path (‘none’ to skip web server setup):

/etc/httpd/conf/httpd.conf ##输入httpd主配置文件的路径

省略部分没用的内容
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y ##选择yes

-----> Define config file name to create
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site, virtual server or profile name:
> www.benet.com    ##输入域名

-----> Define config file path
In which directory do you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter for default):
>      ##直接回车
...
省略部分内容
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to continue...      ##点击回车
...
省略部分内容
> http://localhost/awstats/awstats.pl?config=www.benet.com

Press ENTER to finish...    ##点击回车

在这里插入图片描述
[root@localhost tools]# vim /etc/httpd/conf/httpd.conf
在这里插入图片描述

3.1.3 修改站点统计配置文件

[root@localhost tools]# cd /etc/awstats/
[root@localhost awstats]# ls
awstats.www.benet.com.conf
[root@localhost awstats]# vim awstats.www.benet.com.conf 
[root@localhost awstats]# cd /var/lib/
[root@localhost lib]# mkdir awstats
[root@localhost lib]# systemctl restart httpd

在这里插入图片描述

3.2 AWStats日志分析测试与优化

在这里插入图片描述
虽然现在我们在win10中查看到了日志分析记录,但是这个日志分析刷新一直不会改变,需要我们去执行一个启动脚本。

1.[root@localhost awstats]# cd /usr/local/awstats/tools/
2.[root@localhost tools]# ./awstats_updateall.pl now    ##执行了这个脚本,才会刷新统计信息

3.2.1 周期性刷新

为了让其实现自动刷新的功能,我们可以使用crontab的命令,周期性执行。

1.[root@localhost tools]# crontab -e   ##添加周期性任务计划
2.*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now    ##每五分钟执行一次

3.2.2 网页地址优化

1.[root@localhost tools]# cd /var/www/html/
2.[root@localhost html]# vim aws.html
3.<html>
4.<head>
5.  <meta http-equiv=refresh content="0;url=http://www.benet.com/awstats/awstats.pl?6.config=www.benet.com">
7.</head>
8.<body></body>
9.</html>

测试结果,输入www.benet.com/aws.html访问
在这里插入图片描述

四、第三方工具日志分割

1.#192.168.56.1是我的宿主机地址,share是我的共享文件夹
2.mount.cifs //192.168.56.1/share /mnt
3.rpm -ivh cronolog-1.6.2-14.el7.x86_64.rpm 

在这里插入图片描述

2、查看cronolog命令的路径,并在Apache配置文件里设置

1.vim /etc/httpd/conf/httpd.conf
2.#修改四处:

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

1.#日志分割路径修改
2.ErrorLog "| /usr/sbin/cronolog logs/www.demo.com.error_%Y%m%d.log"
3.CustomLog "| /usr/sbin/cronolog logs/www.demo.com.access_%Y%m%d.log" combined

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值