本文主要是介绍Apache的配置(虚拟主机、日志分割、AWStats分析系统及网页地址优化),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Apache的配置与应用
- 构建虚拟Web主机
- 概述
- 虚拟主机类型
- 基于域名的虚拟主机
- 1.为虚拟主机提供域名解析
- 2.为虚拟主机准备网页文档
- 3.添加虚拟主机配置
- 4.设置访问控制
- Options指令解释
- Options指令常用选项
- AllowOverride指令解释
- 地址限制策略
- 5.加载独立的配置文件
- 6.客户机中访问虚拟Web主机
- 基于IP地址的虚拟主机
- 客户机中访问虚拟Web主机
- 基于端口的虚拟主机
- 客户机中访问虚拟Web主机
- Apache保持连接
- 构建Web虚拟目录与用户授权限制
- 1.创建用户认证数据文件
- 2.添加用户授权配置
- 3.验证用户访问授权
- 日志分割
- AWStats分析系统
- 1.安装AWStats
- 2.为需要统计的站点建立配置文件
- 3.修改自动生成的awstats访问权限,加载CGI模块
- 4.修改站点统计配置文件
- 5.执行日志分析,并设置cron计划任务
- 6.访问AWStats分析系统站点
- 7.优化网页地址
- HTML文件结构解释
构建虚拟Web主机
概述
- 虚拟Web主机指的是在同一台服务器中运行多个Web站点,其中每一个站点实际上并不独立占用整个服务器。因此被称为“虚拟”Web主机
- 通过虚拟Web主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本
- 使用httpd服务可以非常方便地构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的Web站点。
虚拟主机类型
- httpd服务支持的虚拟主机类型主要包括三种
- 1.基于域名
- 为每个虚拟主机使用不同的域名,但是其对应的IP地址是相对的
- 例如 www.qz.com和www.accp.com站点的IP地址都是192.168.131.9(这是最普通的虚拟Web主机类型)
- 2.基于IP地址
- 为每个虚拟主机使用使用不同的域名、且各自对应的IP地址也不相同。
- 这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛
- 3.基于端口
- 此方式不使用域名、IP地址来区分不同的站点内容,而是使用了不同的TCP端口号
- 因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问
基于域名的虚拟主机
1.为虚拟主机提供域名解析
- 方法一:部署DNS域名解析服务器提供域名解析
DNS正向解析
自动部署DNS正向解析 - 方法二:在/etc/hosts 文档中临时配置域名与IP地址的映射关系
[root@localhost /]# echo "192.168.131.13 www.qz.com" >> /etc/hosts
[root@localhost /]# echo "192.168.131.13 www.accp.com" >> /etc/hosts
[root@localhost html]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.131.13 www.qz.com
192.168.131.13 www.qz.com
192.168.131.13 www.accp.com
2.为虚拟主机准备网页文档
[root@localhost /]# mkdir -p /var/www/html/qz
[root@localhost /]# mkdir -p /var/www/html/accp
[root@localhost /]# echo "<h1>this is qz web!</h1>" > /var/www/html/qz/index.html
[root@localhost /]# echo "<h1>this is accp web!</h1>" > /var/www/html/accp/index.html
[root@localhost /]# cat /var/www/html/qz/index.html
<h1>this is qz web</h1>
[root@localhost /]# cat /var/www/html/accp/index.html
<h1>this is accp web</h1>
3.添加虚拟主机配置
[root@localhost /]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
【源码编译安装的虚拟主机配置文件】
【“vim /etc/httpd/conf.d/vhosts.conf” RPM或YUM安装的虚拟主机配置文件路径】
#
<VirtualHost 192.168.131.13:80> 【设置虚拟主机的IP地址和端口号】# ServerAdmin webmaster@dummy-host.example.com 【设置管理员邮箱,可以忽略】DocumentRoot "/var/www/html/accp" 【设置网站根目录】ServerName www.accp.com 【设置Web站点的完整域名(主机名+域名)】# ServerAlias www.dummy-host.example.com 【设置别名,可以忽略】ErrorLog "logs/accp.com-error_log" 【设置错误日志的路径】CustomLog "logs/accp.com-access_log" common 【设置访问日志文件的路径】
</VirtualHost><VirtualHost 192.168.131.13:80># ServerAdmin webmaster@dummy-host.example.comDocumentRoot "/var/www/html/qz"ServerName www.qz.com# ServerAlias www.dummy-host.example.comErrorLog "logs/qz.com-error_log"CustomLog "logs/qz.com-access_log" common
</VirtualHost>
4.设置访问控制
- 可在/etc/httpd.conf里找到相关的模板文件
[root@localhost /]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<Directory "/var/www/html"> 【设置目录访问权限】AllowOverride None 【不允许重写Apache默认设置】Options None 【不启用任何的服务器特性】Require all granted 【允许所有主机访问】
</Directory>
Options指令解释
- Options指令的主要作用是控制特定目录将启用哪些服务器特性
- 可以在Apache服务配置文件的虚拟主机配置(VirtualHos)、特定目录配置(Directory)以及.htaccess文件中使用
Options指令常用选项
选项 | 说明 |
---|---|
None | 表示不启用任何的服务器特性 |
FollowSymLinks | 服务器允许在此目录中使用符号链接(软链接) |
Indexes | 如果输入的网址对应服务器上的一个文件目录,而此目录中又没有Apache配置文件中的DirectoryIndex指令指定的文件(例如:DirectoryIndex index.html index.php),则列出目录下的所有文件 |
MultiViews | 如果客户端请求的路径可能对应多种类型的文件,那么服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件 例如:在服务器站点的qz文件夹中存在名为name,jpg和name.html的两个文件,此时用户输入http://localhos/qz/name,如果在qz文件下并没有name子目录,那么服务器将会尝试在qz目录下查找类似qz.*的文件,然后根据用户请求的具体情况返回最匹配要求的qz.jpg或者qz.html |
All | 表示除MultiViews之外的所有特性 这也是Options指令的默认设置 |
AllowOverride指令解释
- .htaccess(分布式隐含配置文件):提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含特定指令的文件,其中的指令作用于此目录及其所有子目录
- 当AllowOverride设置成None时:相应的配置目录下的.htaccess文件是不会被读取的,即无法生效
- 当AllowOverride设置成All时:每一次请求访问相应目录下的文件时,都会读取.htaccess文件的配置,相当于原Apache指定会被.htaccess文件中的指令重写
- 从性能和安全性考虑,一般都尽可能避免使用.htaccess文件,任何希望放在.htaccess文件中的配置,都可放在主配置文件(httpd.conf)的< Directory>段中,而且比.htaccess更加的高效。因此AllowOverride属性一般都设置成None
地址限制策略
- Require all granted
- 允许所有主机访问
- Require all denide
- 拒绝所有主机访问
- Require local
- 仅允许本地主机访问
- Require [ not ] host <主机名或域名列表>
- 允许或拒绝指定主机或域名进行访问
- Require [ not ]ip <IP地址或网段列表>
- 允许或拒绝指定IP地址网络访问
5.加载独立的配置文件
[root@localhost /]# vim /usr/local/httpd/conf/httpd.conf 【源码编译安装的httpd服务主配置文件路径】
483 Include conf/extra/httpd-vhosts.conf 【将配置文件里的483行取消注释,才能使加载独立的配置文件命令生效】[root@localhost /]# vim /etc/httpd/conf/httpd.conf 【RPM或YUM安装的httpd服务主配置文件路径】
IncludeOptional conf.d/ *.conf 【在配置文件里的最后一行,且默认开启】[root@localhost /]# httpd -t
Syntax OK
[root@localhost /]# systemctl restart httpd.service
[root@localhost /]# netstat -tanp | grep 80
tcp 0 0 192.168.131.13:80 0.0.0.0:* LISTEN 102034/httpd
6.客户机中访问虚拟Web主机
http://www.qz.com/
http://www.accp.com/
基于IP地址的虚拟主机
- 需要2个物理网卡配置多个IP地址
- 实验环境中可以通过ifconfig ens33:0创建一个虚拟网卡
[root@localhost html]# ifconfig ens33:0 192.168.131.130/24
【添加一个虚拟网卡】
[root@localhost html]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost 192.168.131.130:80> 【这里修改成另一个IP地址】# ServerAdmin webmaster@dummy-host.example.comDocumentRoot "/var/www/html/qz"ServerName www.qz.com# ServerAlias www.dummy-host.example.comErrorLog "logs/qz.com-error_log"CustomLog "logs/qz.com-access_log" common
</VirtualHost><VirtualHost 192.168.131.13:80># ServerAdmin webmaster@dummy-host.example.comDocumentRoot "/var/www/html/accp"ServerName www.accp.com# ServerAlias www.dummy-host.example.comErrorLog "logs/accp.com-error_log"CustomLog "logs/accp.com-access_log" common
</VirtualHost><Directory "/var/www/html">AllowOverride NoneOptions NoneRequire all granted
</Directory>[root@localhost html]# vim /etc/httpd.conf 47 #48 # Change this to Listen on specific IP addresses as shown below to 49 # prevent Apache from glomming onto all bound IP addresses.50 #51 #Listen 12.34.56.78:8052 Listen 192.168.131.13:8053 Listen 192.168.131.130:80
【在53行插入监听ip地址和端口号】
[root@localhost html]# systemctl restart httpd.service
客户机中访问虚拟Web主机
http://192.168.131.13/
http://192.168.131.130/
基于端口的虚拟主机
[root@localhost html]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost 192.168.131.13:5514> 【这里将端口号进行修改】# ServerAdmin webmaster@dummy-host.example.comDocumentRoot "/var/www/html/qz"ServerName www.qz.com# ServerAlias www.dummy-host.example.comErrorLog "logs/qz.com-error_log"CustomLog "logs/qz.com-access_log" common
</VirtualHost><VirtualHost 192.168.131.13:5555># ServerAdmin webmaster@dummy-host.example.comDocumentRoot "/var/www/html/accp"ServerName www.accp.com# ServerAlias www.dummy-host.example.comErrorLog "logs/accp.com-error_log"CustomLog "logs/accp.com-access_log" common
</VirtualHost><Directory "/var/www/html">AllowOverride NoneOptions NoneRequire all granted
</Directory>[root@localhost html]# vim /etc/httpd.conf #
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 192.168.131.13:5514
Listen 192.168.131.13:5555
#Listen 192.168.131.130:80[root@localhost html]# systemctl restart httpd.service
客户机中访问虚拟Web主机
http://192.168.131.13:5555/
http://192.168.131.13:5514/
Apache保持连接
[root@localhost html]# vim /usr/local/httpd/conf/extra/httpd-default.conf #
# This configuration file reflects default settings for Apache HTTP Server.
#
# You may change these, but chances are that you may not need to.
##
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 60
【设置接收和发送超时时间】#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On
【设置是否打开连接保持功能,不打开是为OFF,打开时为ON。】
【此项可以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高时关闭此功能】#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100
【设置一次长连接中可以传输的最大请求数量,超过此最大请求数量就会断开连接,最大值设置取决于网站中网页的内容,
一般设置数量会多于网站中所有的元素】#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 5
【设置来自同一个客户端一次连接多次请求之间的最大间隔时间,即两次请求之间超过该时间连接就会自动断开,从而避免客户端占用连接资源】
构建Web虚拟目录与用户授权限制
1.创建用户认证数据文件
[root@localhost httpd]# cd /usr/local/httpd/bin/
[root@localhost bin]# ./htpasswd -c /usr/local/httpd/conf/user qz1
【-c选项表示新建用户数据文件,默认时则表示指定的用户数据文件已经存在,用户添加新的用户或修改现有用户的密码】
New password:
Re-type new password:
Adding password for user qz1[root@localhost bin]# ./htpasswd /usr/local/httpd/conf/user qz2
【因为用户数据文件已存在,所有不用带-c选项】
New password:
Re-type new password:
Adding password for user qz2
[root@localhost bin]# cat /usr/local/httpd/conf/user
qz1:$apr1$UcqphMBs$WvXbdWBgN7StVEfzIOTLJ/
qz2:$apr1$X1UnNF6R$sAIgsr.xfVCuBij1yc5GR/
2.添加用户授权配置
[root@localhost html]# vim /usr/local/httpd/conf/httpd.conf
【在此配置文件的末行添加】
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
Alias /test /var/www/html/test
【设置虚拟目录的根目录,/test为虚拟目录名称】
<Directory "/var/www/html/test"> 【设置虚拟目录配置区域】AuthName "you!" 【定义受保护的领域名称,会在认证对话框中显示】AuthType Basic 【设置认证类型,Basic表示基本认证】AuthuserFile /usr/local/httpd/conf/user 【设置用于保存用户账号和密码的认证文件的路径】Require valid-user 【开启用户认证,只有认证文件中的合法用户才能访问】#authgroupfile /usr/local/httpd/conf/group 【设置用于保存组账号和密码的认证文件的路径】#Require user qzqz 【仅允许指定用户访问】#Require group qzqz 【仅允许指定组访问】</Directory>
3.验证用户访问授权
[root@localhost test]# mkdir -p /var/www/html/test
[root@localhost test]# echo "<h1>this is vdir test</h1>" > /var/www/html/test/index.html
[root@localhost test]# systemctl restart httpd.service
http://192.168.131.13:5555/test/
日志分割
- 使用Apache自带的rotatelogs分割工具,将Apache的日志进行按每天的日期自动分隔
[root@localhost httpd]# vim /usr/local/httpd/conf/httpd.conf
276 ErrorLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400"
【分割错误日志】
312 CustomLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" combined
【分隔访问日志】[root@localhost httpd]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 【虚拟主机日志分割】<VirtualHost 192.168.131.13:5514># ServerAdmin webmaster@dummy-host.example.comDocumentRoot "/var/www/html/qz"ServerName www.qz.com# ServerAlias www.dummy-host.example.comErrorLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/qz.com-error_%Y%m%d.log 86400"CustomLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/qz.com-access_%Y%m%d.log 86400" common
</VirtualHost>【开头的|为管道符号】
【-l选项则表示使用本地时间为时间基准】
【86400秒为一天,即每天生成一个新的日志文件】[root@localhost /]# mkdir /var/log/httpd 【创建分割后的日志文件保存目录】
[root@localhost /]# systemctl restart httpd
[root@localhost /]# ls /var/log/httpd 【客户机访问后刷新后查看】
access_20210324.log error_20210324.log qz.com-access_20210324.log
AWStats分析系统
- AWStats是使用Perl语言看法的一款开源日志分析系统,它用来完成自动化的日志统计与分析工作
1.安装AWStats
[root@localhost /]# cd /opt/
[root@localhost opt]# rz -E
rz waiting to receive.
[root@localhost opt]# tar zxvf awstats-7.6.tar.gz
[root@localhost opt]# mv /opt/awstats-7.6 /usr/local/awstats
2.为需要统计的站点建立配置文件
[root@localhost opt]# cd /usr/local/awstats/tools/
[root@localhost tools]# ./awstats_configure.pl
...略...
...略...
Config file path ('none' to skip web server setup):
> /usr/local/httpd/conf/httpd.conf 【输入httpd服务主配置文件的路径】...略...
...略...
Your web site, virtual server or profile name:
> www.qz4.com 【输入要统计的站点域名】-----> Define config file path
...略...
...略...
Press ENTER to finish...
【全部y或者回车】
3.修改自动生成的awstats访问权限,加载CGI模块
- Apache2.4以上版本需要加载CGI模块
[root@localhost tools]# vim /usr/local/httpd/conf/httpd.conf
144 LoadModule cgid_module modules/mod_cgid.so 【取消注释】
147 LoadModule cgi_module modules/mod_cgi.so 【取消注释】
531 <Directory "/usr/local/awstats/wwwroot">
532 Options None
533 AllowOverride None
534 #Order allow,deny 【注释,因为2.4版本之前的Apache通过此项访问】
535 #Allow from all 【注释】
536 Require all granted 【添加】
537 </Directory>
【awstats访问权限原本是没有,但是自动执行完awstats脚本文件后,会自动在httpd.cong的末行生成访问控制配置】
4.修改站点统计配置文件
[root@localhost /]# mkdir /var/lib/awstats 【awstats目录默认不存在,需手动创建】
[root@localhost /]# vim /etc/awstats/awstats.www.qz4.com.conf 50 LogFile="/usr/local/httpd/logs/access_log" 【修改访问日志文件位置】220 DirData="/var/lib/awstats"
5.执行日志分析,并设置cron计划任务
[root@localhost logs]# systemctl restart httpd.service
[root@localhost /]# cd /usr/local/awstats/tools/
[root@localhost tools]# ./awstats_updateall.pl now
【更新数据(更新数据钱最好先把/usr/local/httpd/logs/中的access.log文件清空后重新访问站点,再获取日志数据)】
[root@localhost tools]# crontab -e*/1 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
【周期性计划任务,每一分钟更新一次日志数据】
[root@localhost tools]# systemctl start crond
6.访问AWStats分析系统站点
[root@localhost tools]# systemctl stop firewalld
[root@localhost tools]# systemctl disable firewalld
[root@localhost tools]# setenforce 0
[root@localhost tools]# echo "192.168.131.13 www.qz.com" >> /etc/hosts
浏览器访问http://www.qz4.com/awstats/awstats.pl?config=www.qz4.com
7.优化网页地址
[root@localhost /]# vim /usr/local/httpd/htdocs/aws.html
<html>
<head>
<meta http-equiv=refresh content="0;url=http://www.qz4.com/awstats/awstats.pl?config=www.qz4.com">
</head>
<body></body>
</html>
HTML文件结构解释
- <html> </html>:用于HTML文件结构最外层表示的标签
- <head> </head>:用于HTML网页内容描述信息的头标签
- <body> </body>:用于显示网页内容的内容标签
- <meta>:定义了HTML文档中的元数据。例如:针对搜索引擎和更新频度的描述和关键词。这里的http-equiv=refresh用于实现网页自动跳转
这篇关于Apache的配置(虚拟主机、日志分割、AWStats分析系统及网页地址优化)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!