企业网站部署与优化--Apache配置与应用(Apache的访问控制,日志分割,日志分析,web虚拟主机详解)

前言

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配置项实现访问控制,按先后顺序限制

可用,,,配置段中

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 abc
[root@localhost conf]# ls
abc  httpd.conf  magic
[root@localhost conf]# cd abc

[root@localhost abc]# vim vhost.conf
<VirtualHost *:80>
 ...省略内容
  <Directory "/var/www/html">
  <RequireALL>
  Require not ip 192.168.100.8	'//表示不允许ip192.168.100.8访问'
  Require all granted
  <RequireALL>
 </Directory>
</VirtualHost>
...省略内容

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

'//配置基本格式'

  <Directory "/var/www/html">
  AuthName "DocumentRoot"  '//受保护的领域名称'
  AuthType Basic		'//认证类型'
  AuthUserFile /etc/httpd/conf/qwe  '//用户认证账号文件'
  Require valid-user  '//要求通过认证才能访问'
  </Directory>

例如:

<VirtualHost 192.168.100.100:80>
  DocumentRoot "/var/www/html/accp02"
  Errorlog "logs/www.accp02.com.error_log"
  Customlog "logs/www.accp02.com.access_log" common
  <Directory "/var/www/html" >
   AuthName "DocumentRoot"
   AuthType basic
   AuthUserFile /etc/httpd/conf/pwd
  Require valid-user
  </Directory>
</VirtualHost>

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

二、Apache虚拟主机

2.1:虚拟web主机概述

在同一台服务器中运行多个web站点,其中每一个站点并不独立占用一台真正的计算机
通过虚拟web主机可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本
使用httpd可以非常方便的构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的web站点

2.2:httpd支持的虚拟主机类型

基于域名
为每个虚拟主机使用不同的域名,但是其对应的IP地址使相同的
域名不同–IP相同,端口相同
基于域名是最为普遍的虚拟web主机类型
基于IP地址
为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同
这种方式需要为服务器配备多个网络接口,因此应用不是很广泛
IP不同,端口相同
基于端口
这种方式并不使用域名,IP地址来区分不同的站点内容,而是使用不同的TCP端口号
因此用户在浏览不同的虚拟站点时需要同时制定端口号才能访问
IP相同,端口不同

2.2.1:添加虚拟主机配置格式

[root@localhost ~]# vim /etc/http/conf/xxx/vhost.conf
 1 <VirtualHost *:80>	'//针对本服务器所有IP地址'
  2   DocumentRoot "/var/www/html/xxx"	'//指定站点目录'
  3   ServerName www.xxx.com	'//指定域名'
  4   Errorlog "logs/www.xxx.com.error_log"	'//指定错误日志路径'
  5   Customlog "logs/www.xxx.com.custom_log" common	'//指定访问日志路径'
  6   <Directory> "/var/www/html">
  7         Require all granted		'//设置网页允许所有主机访问,也可以通过denied设置拒绝访问'
  8   </Directory>
  9 </VirtualHost>

2.3构建虚拟主机–基于域名实例演示

2.3.1:环境准备

VMware软件

一台Windows虚拟机,IP地址为192.168.100.77

一台centos7虚拟机,IP地址为192.168.195.80

centos7安装bind和httpd服务

[root@localhost ~]# yum install bind httpd -y

2.3.2:实例演示目的

在Windows虚拟机浏览器中访问这两个域名时,分别显示不同的内容

2.3.3:为虚拟主机提供域名解析

关闭防火墙,编辑主配置文件

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/named.conf 
...省略内容
    options {
        listen-on port 53 { any; };	'//修改为any'
        listen-on-v6 port 53 { ::1; };
        ...省略内容
        allow-query     { any; };	'//修改为any'
...省略内容

在这里插入图片描述
编辑区域配置文件

[root@localhost ~]# vim /etc/named.rfc1912.zones 
'//添加一下两端内容'
    ...省略内容
zone "accp.com" IN {
        type master;
        file "accp.com.zone";
        allow-update { none; };
};

zone "kgc.com" IN {
        type master;
        file "kgc.com.zone";
        allow-update { none; };
};
...省略内容

在这里插入图片描述
编辑区域数据文件

[root@promote ~]# cd /var/named
[root@promote named]# ls
chroot  dynamic     named.ca     named.localhost  slaves
data    dyndb-ldap  named.empty  named.loopback
[root@promote named]# cp -p named.localhost accp.com.zone
[root@promote named]# vim accp.com.zone 
...省略内容
    '//末尾添加内容'
www IN  A       192.168.100.80
[root@promote named]# cp -p accp.com.zone kgc.com.zone

开启服务并测试
在这里插入图片描述
在这里插入图片描述

2.3.4:配置httpd服务

创建站点,并添加虚拟主机配置

[root@promote httpd]# cd conf
[root@promote conf]# ls
httpd.conf  magic
[root@promote conf]# mkdir extra
[root@promote conf]# ls
extra  httpd.conf  magic
[root@promote conf]# cd extra/
[root@promote extra]# vim vhost.conf

  1 <VirtualHost *:80>
  2   DocumentRoot "/var/www/html/accp"
  3   ServerName www.accp.com
  4   Errorlog "logs/www.accp.com.error_log"
  5   Customlog "logs/www.accp.com.access_log"  common
  6   <Directory "/var/www/html" >
  7   </Directory>
  8   Require all granted
  9 </VirtualHost>
 10 <VirtualHost *:80>
 11   DocumentRoot "/var/www/html/kgc"
 12   ServerName www.kgc.com
 13   Errorlog "logs/www.kgc.com.error_log"
 14   Customlog "logs/www.kgc.com.access_log"  common
 15   <Directory "/var/www/html" >
 16   </Directory>
 17   Require all granted
 18 </VirtualHost>

编辑虚拟机网页文档

[root@promote httpd]# cd /var/www/html/
[root@promote html]# ls
[root@promote html]# mkdir accp kgc
[root@promote html]# ls
accp  kgc
[root@promote html]# cd accp
[root@promote accp]# vim index.html

<h1>this is accp web</h1>
[root@promote accp]# cd ../kgc/
[root@promote kgc]# vim index.html

<h1>this is kgc web</h1>

编辑httpd主配置文件,添加虚拟主机站点

[root@localhost html]# vim /etc/httpd/conf/httpd.conf 
'//找到此行'
IncludeOptional conf.d/.conf
Include conf/extra/vhost.conf	'//添加此行内容'

在这里插入图片描述
开启httpd服务,并测试

[root@localhost html]# systemctl start httpd

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

2.4:构建虚拟主机–基于端口实例演示

2.4.1:环境准备

环境继承上一个实例的环境

2.4.2:实例演示目的

在浏览器中访问不同端口,显示不同内容

2.4.3:配置httpd服务

配置虚拟主机配置

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# systemctl start httpd
[root@localhost html]# cd /etc/httpd/conf
[root@localhost conf]# ls
extra  httpd.conf  magic
[root@localhost conf]# cd extra
[root@localhost baobao]# ls
vhost.conf
[root@localhost extra]# vim vhost.conf 
    '//在第二个主机配置后添加80'
<VirtualHost *:8080>	'//多写一个80'

在这里插入图片描述
创建kgc02的站点

[root@promote extra]# cd /var/www/html
[root@promote html]# ls
accp  kgc
[root@promote html]# mkdir kgc02
[root@promote html]# cd kgc02
[root@promote kgc02]# vim index.html

<h1>this is kgc02 web</h1>

设置监听地址

[root@promote extra]# vim /etc/httpd/conf/httpd.conf
Listen 192.168.100.80:80
Listen 192.168.100.80:8080'//找到监听地址,开启IPv4监听,设置监听地址,添加一个8080端口的监听地址'
#Listen 80	'/关闭IPv6监听'

重启服务,验证

[root@promote kgc02]# systemctl restart httpd

在这里插入图片描述

在这里插入图片描述

2.5:构建虚拟主机–基于不同IP实例演示

2.5.1:环境准备

继承以上实验环境

centos虚拟主机添加一张网卡

第一张网卡ip:192.168.100.80

第二张网卡ip:192.168.100.100

2.5.2:实例目的

在浏览器访问两个IP时,分别显示不同的内容

2.5.3:配置httpd服务

虚拟主机配置

'//将他们的域名都注释掉'
<VirtualHost 192.168.100.80:80>  '//将*修改为第一张网卡IP地址'
  DocumentRoot "/var/www/html/accp"
  Errorlog "logs/www.accp.com.error_log"
  Customlog "logs/www.accp.com.access_log" common
  <Directory "/var/www/html" >
  Require all granted
  </Directory>
</VirtualHost>
<VirtualHost 192.168.100.100:80> '//将*修改为第二张网卡IP地址'
  DocumentRoot "/var/www/html/accp"
  Errorlog "logs/www.accp02.com.error_log"
  Customlog "logs/www.accp02.com.access_log" common
  <Directory "/var/www/html" >
  Require all granted
  </Directory>
</VirtualHost>
[root@promote accp02]# vim /etc/httpd/conf/httpd.conf
Listen 192.168.100.80:80
Listen 192.168.100.100:80

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

三:Apache日志管理

3.1:日志分割

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

日志文件占用磁盘空间很大

查看相关信息不方便

对日志文件进行分割

Apache自带rotatelogs分割工具实现

第三方工具cronolog分割

3.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 

3.2.1:日志文件的产生

服务安装后,不会生成日志文件不会产生

服务启动后,生成日志文件

访问服务后,日志文件会生成内容

3.3:第三方工具- -cronolog分割工具

配置格式为

ErrorLog "| /usr/sbin/cronolog logs/www.kgc.com.error_%Y%m%d.log  
CustomLog "| /usr/sbin/cronolog  logs/www.kgc.com.access_%Y%m%d.log" combined
[root@promote httpd]# systemctl restart httpd
[root@promote httpd]# ls /var/log/httpd/
access_log  error_log  www.kgc.com.error_20200806.log

3.4:AWStats日志分析

3.41:AWStats概述

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

3.4.2:部署AWStats环境准备

环境部署

VMware软件

一台centos7虚拟机

一台Windows虚拟机

环境准备

WindowsDNS解析地址指向centos7

centos7安装bind和httpd

3.3.3:部署AWStats过程

安装AWstats

[root@localhost ~]# cd /opt
[root@localhost opt]# ls
cronolog-1.6.2-14.el7.x86_64.rpm  rh
[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  rh
[root@localhost opt]# tar zxvf awstats-7.6.tar.gz -C /opt/
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

-----> Check and complete web server config file '/etc/httpd/conf/httpd.conf'
  Add 'Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"'
  Add 'Alias /awstatscss "/usr/local/awstats/wwwroot/css/"'
  Add 'Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"'
  Add 'ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"'
  Add '<Directory>' directive
  AWStats directives added to Apache config file.

-----> Update model config file '/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf'
  File awstats.model.conf updated.

-----> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y
-----> 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.kgc.com

[root@localhost tools]# vim /etc/httpd/conf/httpd.conf 
<Directory "/usr/local/awstats/wwwroot">
    Options None
    AllowOverride None
#    Order allow,deny
#    Allow from all
     Require all granted

[root@localhost tools]# cd /etc/awstats/
[root@localhost awstats]# ls
awstats.www.kgc.com.conf
[root@localhost awstats]# vim awstats.www.kgc.com.conf 
...省略内容
    '//将下面两行内容修改'
LogFile="/var/log/httpd/access_log"
   ...省略内容
DirData="/var/lib/awstats"
[root@localhost awstats]# cd /var/lib
[root@localhost lib]# ls
[root@localhost lib]# mkdir awstats
[root@localhost lib]# systemctl restart httpd.service 

尝试访问awstats网页

使用刚刚交互生成的网址访问,将其中的localhost修改为指定域名
在这里插入图片描述
更新网页访问数据的统计

[root@localhost lib]# 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  dolibarr            maillogconvert.pl   xslt
awstats_configure.pl         geoip_generator.pl  nginx
awstats_exportlib.pl         httpd_conf          urlaliasbuilder.pl
awstats_updateall.pl         logresolvemerge.pl  webmin
[root@localhost tools]# ./awstats_updateall.pl now

猜你喜欢

转载自blog.csdn.net/weixin_47151650/article/details/107793884