Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)

文章目录

  • 前言
  • 一:Apache配置详解
    • 1.1:Apache连接保持
      • 1.1.1:为什么要保持连接
      • 1.1.2:保持连接的方式
    • 1.2:Apache访问控制
      • 1.2.1:Apache访问控制概述
      • 1.2.2:基于客户端地址的访问控制
      • 1.2.3:用户授权限制–创建用户认证数据库
      • 1.2.4:用户授权限制–添加用户授权配置
  • 二:Apache日志管理
    • 2.1:日志分割
    • 2.2:rotatelogs分割工具
      • 2.2.1:日志文件的产生
    • 2.3:AWStats日志分析
      • 2.3.1:AWStats概述
      • 2.3.2:部署AWStats环境准备
      • 2.3.3:部署AWStats过程
      • 2.3.4:配置周期性任务
  • 三:Apache虚拟主机
    • 3.1:虚拟web主机概述
    • 3.2:httpd支持的虚拟主机类型
      • 3.2.1:添加虚拟主机配置格式
    • 3.3:生产环境中虚拟主机概述
    • 3.4:构建虚拟主机–基于域名实例演示
      • 3.4.1:环境准备
      • 3.4.2:实例演示目的
      • 3.4.3:为虚拟主机提供域名解析
      • 3.4.4:配置httpd服务
    • 3.5:构建虚拟主机–基于端口实例演示
      • 3.5.1:环境准备
      • 3.5.2:实例演示目的
      • 3.5.3:配置httpd服务
    • 3.6:构建虚拟主机–基于不同IP实例演示
      • 3.6.1:环境准备
      • 3.6.2:实例目的
      • 3.6.3:配置httpd服务

前言

  • 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 
'//使用not禁止访问时要将其置于容器中,并在容器中指定相对应的限制策略'
  • 举例
[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">
  Require not ip 192.168.100.100	'//表示不允许ip192.168.100.100访问'
  Require all granted
  </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:用户授权限制–添加用户授权配置

'//配置基本格式'

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

举例

[root@localhost abc]# vim vhost.conf 
    ...省略内容
:80>
  DocumentRoot "/var/www/html/ccc"
  ServerName www.ccc.com
  Errorlog "logs/www.ccc.com.error_log"
  Customlog "logs/www.ccc.com.custom_log" common
  "/var/www/html">
  AuthName "DocumentRoot"
  AuthType Basic
  AuthUserFile /etc/httpd/conf/aaa
  Require valid-user
  

...省略内容
    

二: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 

2.2.1:日志文件的产生

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

2.3:AWStats日志分析

2.3.1:AWStats概述

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

2.3.2:部署AWStats环境准备

  • 环境部署

VMware软件

一台centos7虚拟机

一台Windows虚拟机

  • 环境准备

WindowsDNS解析地址指向centos7

centos7安装bind和httpd

2.3.3:部署AWStats过程

  • 配置dns服务
[root@localhost opt]# vim /etc/named.conf 
options {
        listen-on port 53 { any; };	'//修改成any'
        ...省略内容
        allow-query     { any; };	'//修改成any'
[root@localhost ~]# vim /etc/named.rfc1912.zones 
zone "dabao.com" IN {
        type master;
        file "dabao.com.zone";
        allow-update { none; };
};
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost dabao.com.zone
[root@localhost named]# vim dabao.com.zone 
'//尾行修改为下面内容'
www IN  A       192.168.197.143
[root@localhost named]# systemctl start named
  • 配置httpd
[root@localhost named]# vim /etc/httpd/conf/httpd.conf 
    '//修改此两行内容'
Listen 192.168.197.143:80
#Listen 80
    '//修改为指定域名'
ServerName www.dabao.com:80
[root@localhost named]# systemctl stop firewalld.service 
[root@localhost named]# setenforce 0
[root@localhost named]# systemctl start httpd.service 
  • 安装AWStats
[root@localhost ~]# mount.cifs //192.168.100.3/ccc /opt
Password for root@//192.168.100.3/ccc: 
[root@localhost ~]# df -h
[root@localhost ~]# cd /opt
[root@localhost opt]# tar zxvf awstats-7.6.tar.gz -C /mnt
[root@localhost opt]# cd /mnt
[root@localhost mnt]# ls
awstats-7.6
[root@localhost mnt]# mv awstats-7.6/ /usr/local/awstats
[root@localhost mnt]# ls
[root@localhost mnt]# cd /usr/local
[root@localhost local]# ls
awstats  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@localhost local]# cd awstats/
[root@localhost awstats]# ls
docs  README.md  tools  wwwroot
[root@localhost awstats]# cd tools/
[root@localhost tools]# ls
[root@localhost tools]# ./awstats_configure.pl 
> /etc/httpd/conf/httpd.conf	'//第一次交互输入此路径'
y	'//第二次交互输入y'
www.dabao.com	'//第三次交互输入指定域名'
'//第四五六次交互直接回车'
[root@localhost tools]# cd /etc/httpd/conf
[root@localhost conf]# vim httpd.conf   
    '//省略内容,直接到文件末尾修改此配置'
"/usr/local/awstats/wwwroot">
    Options None
    AllowOverride None
#    Order allow,deny
#    Allow from all
    Require all granted

[root@localhost conf]# cd /etc/awstats/
[root@localhost awstats]# ls
awstats.www.dabao.com.conf
[root@localhost awstats]# vim awstats.www.dabao.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修改为指定域名

Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第1张图片
Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第2张图片

  • 更新网页访问数据的统计
[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
...省略内容
[root@localhost tools]# ./awstats_updateall.pl now
...省略内容
  • 再次访问网站,数据统计成功

Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第3张图片

2.3.4:配置周期性任务

[root@localhost tools]# crontab -e
'//添加一下内容'
*/3 * * * *     /usr/local/awstats/tools/awstats_updateall.pl now
[root@localhost tools]# systemctl start crond
You have new mail in /var/spool/mail/root
[root@localhost tools]# cd /var/www/html
[root@localhost html]# vim aws.html

 
   "0;url=http://www.dabao.com/awstats/awstats.pl?config=www.dabao.com">
 
 

  • 此时可以直接使用www.dabao.com/aws.html访问网页
    Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第4张图片

三:Apache虚拟主机

3.1:虚拟web主机概述

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

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

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

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

[root@localhost ~]# vim /etc/http/conf/xxx/vhost.conf
 1 :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    "/var/www/html">
  7         Require all granted		'//设置网页允许所有主机访问,也可以通过denied设置拒绝访问'
  8   
  9 

3.3:生产环境中虚拟主机概述

  • 生产环境中,服务器不止两台

  • 每台服务器都有虚拟主机对应各自的网站

  • 通过调度服务器调取服务器中的网站资源
    Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第5张图片

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

3.4.1:环境准备

  • VMware软件

  • 一台Windows虚拟机,IP地址为192.168.197.133

  • 一台centos7虚拟机,IP地址为192.168.197.141

  • centos7安装bind和httpd服务

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

3.4.2:实例演示目的

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

3.4.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 "dabao.com" IN {
        type master;
        file "dabao.com.zone";
        allow-update { none; };
};

zone "erbao.com" IN {
        type master;
        file "erbao.com.zone";
        allow-update { none; };
};
...省略内容
  • 编辑区域数据文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]# cp -p named.localhost dabao.com.zone
[root@localhost named]# vim dabao.com.zone 
...省略内容
    '//末尾添加内容'
www IN  A       192.168.197.141
[root@localhost named]# cp -p dabao.com.zone erbao.com.zone
  • 开启服务并测试
[root@localhost named]# systemctl start named

Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第6张图片
Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第7张图片

3.4.4:配置httpd服务

  • 创建站点,并添加虚拟主机配置
[root@localhost named]# cd /etc/httpd/conf
[root@localhost conf]# ls
httpd.conf  magic
[root@localhost conf]# mkdir baobao
[root@localhost conf]# ls
baobao  httpd.conf  magic
[root@localhost conf]# cd baobao
[root@localhost baobao]# ls
[root@localhost baobao]# vim vhost.conf
 1 :80>
  2   DocumentRoot "/var/www/html/dabao"
  3   ServerName www.dabao.com
  4   Errorlog "logs/www.dabao.com.error_log"
  5   Customlog "logs/www.dabao.com.custom_log" common
  6    "/var/www/html">
  7         Require all granted
  8   
  9 
 10 
 11 :80>
 12   DocumentRoot "/var/www/html/erbao"
 13   ServerName www.erbao.com
 14   Errorlog "logs/www.erbao.com.error_log"
 15   Customlog "logs/www.erbao.com.custom_log" common
 16    "/var/www/html">
 17         Require all granted
 18   
 19 
  • 编辑虚拟机网页文档
[root@localhost baobao]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# mkdir dabao erbao
[root@localhost html]# ls
dabao  erbao
[root@localhost html]# echo "this is dabao" > dabao/index.html
[root@localhost html]# echo "this is erbao" > erbao/index.html
[root@localhost html]# yum install tree
[root@localhost html]# tree /var/www/html/
/var/www/html/
├── dabao
│   └── index.html
└── erbao
    └── index.html

2 directories, 2 files
  • 编辑httpd主配置文件,添加虚拟主机站点
[root@localhost html]# vim /etc/httpd/conf/httpd.conf 
'//找到此行'
IncludeOptional conf.d/*.conf
Include conf/baobao/vhost.conf	'//添加此行内容'
  • 开启httpd服务,并测试
[root@localhost html]# systemctl start httpd

Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第8张图片
Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第9张图片

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

3.5.1:环境准备

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

3.5.2:实例演示目的

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

3.5.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
baobao  httpd.conf  magic
[root@localhost conf]# cd baobao
[root@localhost baobao]# ls
vhost.conf
[root@localhost baobao]# vim vhost.conf 
    '//在第二个主机配置后添加80'
:8080>	'//多写一个80'
  
  • 设置监听地址
[root@localhost baobao]# vim /etc/httpd/conf/httpd.conf 
Listen 192.168.197.141:80
Listen 192.168.197.141:8080		'//找到监听地址,开启IPv4监听,设置监听地址,添加一个8080端口的监听地址'
#Listen 80	'//关闭IPv6监听'
  • 重启服务,验证
 [root@localhost baobao]# systemctl restart httpd.service 

Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第10张图片
Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第11张图片

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

3.6.1:环境准备

  • 继承以上实验环境
  • centos虚拟主机添加一张网卡

Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第12张图片

  • 通过ifconfig查看得知第二张网卡IP地址为192.168.197.180

3.6.2:实例目的

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

3.6.3:配置httpd服务

  • 虚拟主机配置
[root@localhost baobao]# vim vhost.conf 
<VirtualHost 192.168.197.141:80>	'//将*修改为第一张网卡IP地址'
<VirtualHost 192.168.197.180:80>	'//将*修改为第二张网卡IP地址'
    '//将他们的域名都注释掉'
  • 设置监听地址
[root@localhost baobao]# vim /etc/httpd/conf/httpd.conf 
...省略内容
Listen 192.168.197.141:80
Listen 192.168.197.180:80
#Listen 80
...省略内容
  • 重启服务,验证
[root@localhost baobao]# systemctl restart httpd

Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第13张图片
Apache搭建与相关配置优化(内含访问控制,日志分割,分析,web虚拟主机)_第14张图片

你可能感兴趣的:(web)