Linux--Apache配置与应用(构建虚拟web主机、Apache的访问权限控制、Apache的日志分割与分析)

Linux--Apache配置与应用(构建虚拟web主机、Apache的访问权限控制、Apache的日志分割与分析)

一:构建虚拟web主机

在同一台服务器中运行多个web站点,其中每一个站点并不独立占用一台真正的计算机。
httpd支持的虚拟主机类型:

  • 基于域名的虚拟主机
  • 基于端口的虚拟主机
  • 基于IP地址的虚拟主机

1.1:基于域名的虚拟主机

实验描述:构建两个虚拟web站点(www.nxd.com、www.bixy.com),在浏览器中访问这两个域名时分别显示不同的内容。

1.1.1:实验环境

一台Linux虚拟主机
一台Windows虚拟主机

1.1.2:实验步骤

1.1.2.1:安装实验所需的软件包
[root@promote ~]# yum install httpd bind -y
1.1.2.2:配置域名服务的主配置文件
[root@promote named]# vim /etc/named.conf
12 options {
 13         listen-on port 53 { any; };   #括号中改为any
 14         listen-on-v6 port 53 { ::1; };
 15         directory       "/var/named";
 16         dump-file       "/var/named/data/cache_dump.db";
 17         statistics-file "/var/named/data/named_stats.txt";
 18         memstatistics-file "/var/named/data/named_mem_stats.txt";
 19         recursing-file  "/var/named/data/named.recursing";
 20         secroots-file   "/var/named/data/named.secroots";
 21         allow-query     { any; };  #括号中改为any
1.1.2.3:配置域名服务的区域文件
[root@promote named]# vim /etc/named.rfc1912.zones 
#增加以下字段
24 zone "nxd.com" IN {
 25         type master;
 26         file "nxd.com.zone";
 27         allow-update { none; };
 28 };
 29 zone "bjxy.com" IN {
 30         type master;
 31         file "bjxy.com.zone";
 32         allow-update { none; };
 33 };
1.1.2.4:配置域名服务的区域数据文件
[root@promote named]# cd /var/named/
[root@promote named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@promote named]# cp -p named.localhost nxd.com.zone
[root@promote named]# vim nxd.com.zone
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www IN  A       192.168.209.134  ##增加此行
[root@promote named]# cp -p nxd.com.zone bjxy.com.zone
[root@promote named]# ls
bjxy.com.zone  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  nxd.com.zone  slaves
1.1.2.5:启动服务,用window主机验证
[root@promote named]# iptables -F
[root@promote named]# setenforce 0
[root@promote named]# systemctl start named

更改window虚拟机的DNS服务的地址为Linux虚拟主机的地址
(前提:两台主机能通信)
在这里插入图片描述
在这里插入图片描述

1.1.2.6:编写一个httpd服务的子配置文件
[root@promote ~]# cd /etc/httpd/
[root@promote httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run
[root@promote httpd]# mkdir extra
[root@promote httpd]# cd extra/
[root@promote extra]# vim vhost.conf
<VirtualHost *:80>
  DocumentRoot "/var/www/html/nxd"   #指定站点目录
  ServerName www.nxd.com  #域名
  Errorlog "logs/www.nxd.com.error_log"  #错误日志文件路径
  Customlog "logs/www.nxd.com.access_log" common  #访问日志文件路径
  <Directory "/var/www/html">
    Require all granted    #指定访问权限
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot "/var/www/html/bjxy"
  ServerName www.bjxy.com
  Errorlog "logs/www.bjxy.com.error_log"
  Customlog "logs/www.bjxy.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>
1.1.2.7:编写站点文件
[root@promote extra]# cd /var/www/html/
[root@promote html]# ls
[root@promote html]# mkdir nxd bjxy
[root@promote html]# ls
bjxy  nxd
[root@promote html]# cd nxd/
[root@promote nxd]# vim index.html
<h1>this is nxd web!</h1>
[root@promote nxd]# cd ../bjxy/
[root@promote bjxy]# vim index.html
<h1>this is bjxy web!</h1>
1.1.2.8:在httpd主配置文件中添加子配置文件的路径
[root@promote bjxy]# vim /etc/httpd/conf/httpd.conf 
#在最后一行写入以下字段
Include /etc/httpd/extra/vhost.conf  
1.1.2.9:重启服务,在window虚拟机上验证
[root@promote httpd]# systemctl restart httpd

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

1.2:基于端口的虚拟主机

实验要求:访问同一个域名的不同端口,显示不同的网站

1.2.1:修改原有子配置文件

[root@promote httpd]# vim extra/vhost.conf 
<VirtualHost *:80>
  DocumentRoot "/var/www/html/nxd"
  ServerName www.nxd.com
  Errorlog "logs/www.nxd.com.error_log"
  Customlog "logs/www.nxd.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>

<VirtualHost *:8080>
  DocumentRoot "/var/www/html/nxd02"
  ServerName www.nxd.com
  Errorlog "logs/www.nxd02.com.error_log"
  Customlog "logs/www.nxd02.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>

1.2.2:编写站点文件

[root@promote httpd]# cd /var/www/html/
[root@promote html]# ls
bjxy  nxd
[root@promote html]# mkdir nxd02
[root@promote html]# cd nxd02/
[root@promote nxd02]# vim index.html

<h1>this is nxd02 web!</h1>

1.2.3:更改主配置文件,添加监听端口

[root@promote nxd02]# vim /etc/httpd/conf/httpd.conf 
Listen 192.168.209.134:80
Listen 192.168.209.134:8080
#Listen 80

1.2.4:重启服务,用window虚拟机进行验证

[root@promote nxd02]# systemctl restart httpd

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

1.3:基于IP地址的虚拟主机

1.3.1:给Linux主机配置双网卡

#配置过程不再描述,可以看到有两块网卡ens33和ens36
[root@promote nxd02]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.209.134  netmask 255.255.255.0  broadcast 192.168.209.255
        inet6 fe80::692f:adf0:b798:89bc  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:19:bd:1b  txqueuelen 1000  (Ethernet)
        RX packets 163329  bytes 226980567 (216.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 71359  bytes 4780683 (4.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.209.135  netmask 255.255.255.0  broadcast 192.168.209.255
        inet6 fe80::2703:212d:c892:c6a5  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:19:bd:25  txqueuelen 1000  (Ethernet)
        RX packets 13  bytes 1346 (1.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 27  bytes 4599 (4.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


1.3.2:修改子配置文件

[root@promote network-scripts]# vim /etc/httpd/extra/vhost.conf 
<VirtualHost 192.168.209.134:80>
  DocumentRoot "/var/www/html/bjxy"
  Errorlog "logs/www.bjxy.com.error_log"
  Customlog "logs/www.bjxy.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>
 
<VirtualHost 192.168.209.135:80>
  DocumentRoot "/var/www/html/bjxy02"
  Errorlog "logs/www.bjxy02.com.error_log"
  Customlog "logs/www.bjxy02.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>

1.3.3:编写站点目录

[root@promote network-scripts]# cd /var/www/html/
[root@promote html]# ls
bjxy  nxd  nxd02
[root@promote html]# mkdir bjxy02
[root@promote html]# cd bjxy02/
[root@promote bjxy02]# vim index.html

<h1>this is bjxy02 web!</h1>

1.3.4:修改主配置文件增加监听地址

[root@promote ~]# vim /etc/httpd/conf/httpd.conf
Listen 192.168.209.134:80
Listen 192.168.209.135:80

1.3.5:重启服务,进行验证

[root@promote ~]# systemctl restart httpd

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

二:Apache的访问权限控制

2.1:Apache的连接保持

  • KeepAlive
    是否打开连接保持,OFF关闭、ON打开
  • KeepAliveTimeout
    一次连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开
  • MaxKeepAliveRequests
    一次长连接能够传输的最大请求数量

以上都可以在主配置文件中进行添加,默认没有。

2.2:Apache的访问控制

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

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

  • 使用Require配置项实现访问控制,按先后顺序限制
  • 可用于、、、配置段中
  • Require配置项的常见语法
    Require all granted
    Require all denied
    Require local
    Require [not] host<主机名或域名列表>
    Require [not] ip<IP地址或网段列表>
    使用not禁止访问时要将其置于容器中,并在容器中指定相应的限制策略

2.3.1:对子配置文件作IP地址的访问控制

[root@promote ~]# vim /etc/httpd/extra/vhost.conf 

在这里插入图片描述

2.3.2:重启服务,用两台主机验证

在这里插入图片描述
此时被限制IP地址的主机已不能访问网站页面
在这里插入图片描述
没被限制IP地址的主机依然能够访问网站页面

2.4:用户授权限制

2.4.1:创建用户认证数据库

在这里插入图片描述

[root@promote ~]# cat /etc/httpd/conf/.awspwd   #确认用户数据库文件
webadmin:$apr1$pOo5PJsV$ljorIErzS.kT7.JaAEvJn1

2.4.2:添加用户授权配置

[root@promote ~]# vim /etc/httpd/extra/vhost.conf

在这里插入图片描述

2.4.3:重启服务登录验证

在这里插入图片描述
输入账号密码之后可以正常访问网站
在这里插入图片描述

三:Apache的日志分割

随着网站的访问量增加,默认情况下Apache的单个日志文件也会越来越大

  • 日志文件占用磁盘空间越来越大
  • 查看相关信息不方便

对日志文件进行分割

  • Apache自带rotatelogs分割工具实现
  • 第三方工具cronolog分割

3.1:rotatelogs分割工具

配置格式:
ErrorLog “|rotatelogs命令的绝对路径 -l 日志文件路径/网站名-error_%Y%m%d.log 86400”

CustomLog “|rotatelogs命令的绝对路径 -l 日志文件路径/网站名-access_%Y%m%d.log 86400” combined

  • 以www.nxd.com网站为例,修改子配置文件
    在这里插入图片描述
    之后重新启动服务,查看日志文件
[root@localhost httpd]# systemctl restart httpd
[root@localhost httpd]# cd /var/log/httpd/
[root@localhost httpd]# ls
access_log  error_log  www.nxd.com.error_20200808.log  www.nxd.com.access_20200808.log   #对网站进行访问时会产生访问日志文件

3.2:第三方工具cronolog分割

  • 安装cronolog的rpm包
[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 
警告: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
  • 修改配置文件
    配置格式:
    ErrorLog “|cronolog命令的绝对路径 日志文件路径/网站名-error_%Y%m%d.log”
    CustomLog “|cronolog命令的绝对路径 日志文件路径/网站名-access_%Y%m%d.log” combined
<VirtualHost *:80>
  DocumentRoot "/var/www/html/nxd"
  ServerName www.nxd.com
  Errorlog "| /usr/sbin/cronolog logs/www.nxd.com.error_%Y%m%d.log"
  Customlog "| /usr/sbin/cronolog logs/www.nxd.com.access_%Y%m%d.log" combined
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>
  • 重启服务,查看日志文件
[root@localhost opt]# systemctl restart httpd
[root@localhost opt]# cd /var/log/httpd/
[root@localhost httpd]# ls

四:Apache的日志分析

4.1:AWStats日志分析系统

  • Perl语言开发的一款开源日志分析系统
  • 可以用来分析Apache、Samba、vsftpd、IIS等服务器的访问日志
  • 结合crontab等计划任务服务,可对日志内容定期进行分析

4.2:部署AWSTats日志分析系统

4.2.1:解压压缩包,并移动到awstats的默认目录

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

4.2.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]# ls
awstats_buildstaticpages.pl  awstats_updateall.pl  httpd_conf          nginx               xslt
awstats_configure.pl         dolibarr              logresolvemerge.pl  urlaliasbuilder.pl
awstats_exportlib.pl         geoip_generator.pl    maillogconvert.pl   webmin
[root@localhost tools]# ./awstats_configure.pl 
根据提示设置站点的配置文件路径
根据提示添加站点的域名
一路回车

4.2.3:修改配置文件、站点统计配置文件

[root@localhost tools]# vim /etc/httpd/extra/vhost.conf
<Directory "/usr/local/awstats/wwwroot">
    Options None
    AllowOverride None
  #  Order allow,deny   #注释此行
  #  Allow from all      #注释此行
     Require all granted   #添加权限
</Directory>
[root@localhost tools]# vim /etc/awstats/awstats.www.nxd.com.conf 
LogFile="/var/log/htttpd/access_log"
DirData="/var/lib/awstats"   ## /var/lib/下没有awstats目录,需要自己创建

4.2.4:执行日志分析,并设置crontab计划任务

https://www.nxd.com/awstats/awstats.pl?config=www.nxd.com

在这里插入图片描述
此时没有访问数据,需要到/usr/local/awstats/tools目录下,执行刷新功能

[root@localhost tools]# ./awstats_updateall.pl now

之后再游览日志分析站点就有了数据

在这里插入图片描述
这样每次进行日志分析时都需要先刷新,比较麻烦,可以用crontab设计周期性刷新的计划任务

[root@localhost tools]# crontab -e
#每隔5分钟刷新一次
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now

4.2.5:优化日志分析站点的路径

每次打开站点时路径比较长不容易记,可对站点的URL进行优化

[root@localhost tools]# cd /var/www/html/
[root@localhost html]# ls
bjxy  bjxy02  nxd  nxd02
[root@localhost html]# cd nxd
[root@localhost html]# vim aws.html

<html>
 <head>
   <meta http-equiv=refresh content="0;url=http://www.nxd.com/awstats/awstats.pl?config=www.nxd.com">
 </head>
 <body></body>
</html>

此时就可以直接使用http://www.nxd.com/aws.html来直接访问日志分析的站点了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值