Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。 [2]
Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。
它可以运行在几乎所有广泛使用的计算机平台上。
http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当
HTTP协议是基于TCP协议之上的,在进行HTTP连接之前,要先进行TCP连接,每个TCP连接都要进行三次握手与四次挥手。建立与关闭连接对于HTTP协议而言会消耗很多的内存与CPU资源。
解决办法是HTTP连接保持。就是尽量地保持客户端的连接,通过一个TCP连接传送多个HTTP请求响应,对于客户端可以提高50%以上的响应时间,对于服务器可以降低建立与关闭连接时的资源消耗。
KeepAlive 是否打开连接保持,OFF关闭,ON打开
KeepAliveTimeout 一次连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开
MaxKeepAliveRequests 一次连接能够传输的最大请求数量
控制对网站资源的访问
为特定的网站目录添加访问授权
常用访问控制方式
客户机地址限制
用户授权限制
服务器IP :20.0.0.7
客户机IP :20.0.0.12
常见配置项
Require all granted
Require all denied
Require local
Require [not] 主机名或域名列表
Require [not] IP地址或网段列表
注:使用not禁止访问时要将其置于容器中,并在容器中指定相对应的限制策略
配置好HTML和DNS服务
未开访问控制时编辑
配置访问控制列表
[root@7CentOS ora]# vim /etc/httpd/conf/fenji/vhosts.conf
DocumentRoot "/var/www/html/ora"
ServerName www.ora.com
Errorlog "logs/www.ora.com.error_log"
Customlog "logs/www.ora.com.custom_log" common
##看下面
Require not ip 20.0.0.12 ##若使用这个,必须加上
Require all granted
##看上面
[root@7CentOS ora]# systemctl restart httpd
注:htpasswd 这个命令时 HTTP 自带的
[root@7CentOS /]# htpasswd -c /etc/httpd/conf/user tom ##第一次创建用户,需要加 -c
New password:
Re-type new password:
Adding password for user tom
[root@7CentOS /]# htpasswd /etc/httpd/conf/user jerry ##再次创建就不需要了
New password:
Re-type new password:
Adding password for user jerry
[root@7CentOS /]# cat /etc/httpd/conf/user
tom:$apr1$wkHhmh6S$6zsXoAXA8VWDgL2tZFJiL.
jerry:$apr1$JOeZoAWC$J3j4eL2ZrWJq04ojZFCBK.
添加用户授权配置
[root@7CentOS /]# vim /etc/httpd/conf/fenji/vhosts.conf
DocumentRoot "/var/www/html/ora"
ServerName www.ora.com
Errorlog "logs/www.ora.com.error_log"
Customlog "logs/www.ora.com.custom_log" common
AuthName "DocumentRoot"
AuthType Basic
AuthUserFile /etc/httpd/conf/user
Require valid-user
Require not ip 20.0.0.12
Require all granted
[root@7CentOS /]# systemctl restart httpd
在网站上线之后,访客会随着时间逐渐增多,Apache的日志文件也会逐渐增大,让运维在检查日志时,不便于整理。
那么就要对日志问文件进行分割,常见的日志分割方式有两种:
一、使用Apache自带的 rotatalogs 分割工具
二、使用第三方软件进行分割
注:若事先做了虚拟主机,请将虚拟主机配置文件中的两个日志文件注释掉,或者直接在虚拟主机配置文件里进行修改
[root@7CentOS ~]# cd /etc/httpd/conf
[root@7CentOS conf]# ls
fenji httpd.conf magic user
[root@7CentOS conf]# cp httpd.conf httpd.conf.back
[root@7CentOS conf]# vim httpd.conf
……省略部分……
#ErrorLog "logs/error_log"
ErrorLog "| /usr/sbin/rotatelogs -l logs/www.ora.com.error_%Y%m%d.log 86400" ##错误日志
#CustomLog "logs/access_log" combined
CustomLog "| /usr/sbin/rotatelogs -l logs/www.ora.com.access_%Y%m%d.log 86400" combined
##正常日志
……省略部分……
注:%年%月%日 86400是24小时所换算成的秒
重启服务,使用客户机访问站点,查看日志
[root@7CentOS httpd]# pwd
/var/log/httpd
[root@7CentOS httpd]# ls
access_log www.ora.com.access_20200806.log www.ora.com.error_20200806.log
error_log www.ora.com.custom_log www.ora.com.error_log
注:若事先做了虚拟主机,请将虚拟主机配置文件中的两个日志文件注释掉
第三方日志分割工具有好几个,我这边选择 cronolog 工具进行演示
安装软件
[root@7CentOS /]# mkdir bianyi
[root@7CentOS /]# cd bianyi/
[root@7CentOS bianyi]# rz -E
rz waiting to receive.
[root@7CentOS bianyi]# ls
cronolog-1.6.2-14.el7.x86_64.rpm
[root@7CentOS bianyi]# 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@7CentOS bianyi]# which cronolog
/usr/sbin/cronolog
编辑主配置文件
[root@7CentOS bianyi]# vim /etc/httpd/conf/httpd.conf
CustomLog "| /usr/sbin/cronolog logs/www.ora.com.access_%Y%m%d.log" combined
ErrorLog "| /usr/sbin/cronolog logs/www.ora.com.error_%Y%m%d.log"
进行验证
[root@7CentOS httpd]# rm -rf www* ##删除上一个实验得到的日志文件
[root@7CentOS httpd]# ls
access_log error_log
[root@7CentOS httpd]# systemctl restart httpd
[root@7CentOS httpd]# ls
access_log error_log www.ora.com.error_20200806.log www.ora.com.error_log
[root@7CentOS httpd]# ls ##使用客户机进行访问,得到acc的日志文件
access_log www.ora.com.access_20200806.log www.ora.com.error_log
error_log www.ora.com.error_20200806.log
实验结束
Awstats 是一个免费的日志分析工具,用perl开发。可以用于分析各种linux下的应用程序产生的日志,包括 apache/squid/samba/resin/tomcat 等等。在这里,我们主要用它来分析apache日志。
统计包括访问,访问者,页面,点击,高峰时间,操作系统,浏览器,搜索引擎,关键字,机器人访问,端开的链接和更多的阻力截图排序。
Awstats是一个非常简洁而且强大的统计工具。它可以统计您站点的如下信息:
一:访问量,访问次数,页面浏览量,点击数,数据流量等精确到每月、每日、每小时的数据
二:访问者国家、访问者IP、操作系统、浏览器等
三:Robots/Spiders的统计
四:纺客持续时间
五:对不同Files type 的统计信息
六:Pages-URL的统计
七:其它信息(搜索关键字等等)
访问次数、独特访客人数,
访问时间和上次访问,
使用者认证、最近认证的访问,
每周的高峰时间(页数,点击率,每小时和一周的千字节),
域名/国家的主机访客(页数,点击率,字节,269域名/国家检测, geoip 检测),
主机名单,最近访问和未解析的 IP 地址名单
大多数看过的进出页面,
档案类型,
网站压缩统计表(mod_gzip 或者 mod_deflate),
使用的操作系统 (每个操作系统的页数,点击率 ,字节, 35 OS detected),
使用的浏览器,
机器人访问(检测 319 个机器人),
蠕虫攻击 (5 个蠕虫家族),
搜索引擎,利用关键词检索找到你的地址,
HTTP 协议错误(最近查阅没有找到的页面),
其他基于 URL 的个性报导,链接参数, 涉及综合行销领域目的.
贵网站被加入"最喜爱的书签".次数.
屏幕大小(需要在索引页补充一些 HTML 标签).
浏览器的支持比例: Java, Flash, RealG2 reader, Quicktime reader, WMA reader, PDF reader.
需要 HTTP 服务 和 DNS 服务,我这边不再进行演示
安装 Awstats
[root@7CentOS httpd]# cd /bianyi/
[root@7CentOS bianyi]# rz -E
rz waiting to receive.
[root@7CentOS bianyi]# ls
awstats-7.6.tar.gz cronolog-1.6.2-14.el7.x86_64.rpm
[root@7CentOS bianyi]# tar zxvf awstats-7.6.tar.gz
……省略解压过程……
[root@7CentOS tools]# cd /
[root@7CentOS /]# cd /bianyi/
[root@7CentOS bianyi]# ls
awstats-7.6 awstats-7.6.tar.gz cronolog-1.6.2-14.el7.x86_64.rpm
[root@7CentOS bianyi]# mv awstats-7.6 /usr/local/awstats
[root@7CentOS bianyi]# cd /usr/local/
[root@7CentOS local]# ls
awstats bin etc games include lib lib64 libexec sbin share src
[root@7CentOS local]# cd awstats/
[root@7CentOS awstats]# cd tools/
[root@7CentOS tools]# chmod +x awstats_configure.pl
这个比较长
[root@7CentOS tools]# ./awstats_configure.pl
----- AWStats awstats_configure 1.0 (build 20140126) (c) Laurent Destailleur -----
This tool will help you to configure AWStats to analyze statistics for
one web server. You can try to use it to let it do all that is possible
in AWStats setup, however following the step by step manual setup
documentation (docs/index.html) is often a better idea. Above all if:
- You are not an administrator user,
- You want to analyze downloaded log files without web server,
- You want to analyze mail or ftp log files instead of web log files,
- You need to analyze load balanced servers log files,
- You want to 'understand' all possible ways to use AWStats...
Read the AWStats documentation (docs/index.html).
-----> Running OS detected: Linux, BSD or Unix
-----> Check for web server install
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 '' 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 ## 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.ora.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):
>
-----> Create config file '/etc/awstats/awstats.www.ora.com.conf'
Config file /etc/awstats/awstats.www.ora.com.conf created.
-----> Restart Web server with '/sbin/service httpd restart'
Redirecting to /bin/systemctl restart httpd.service
-----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.ora.com
Or if you have several config files and prefer having only one command:
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to continue...
A SIMPLE config file has been created: /etc/awstats/awstats.www.ora.com.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'www.ora.com' with command:
> perl awstats.pl -update -config=www.ora.com
You can also read your statistics for 'www.ora.com' with URL:
> http://localhost/awstats/awstats.pl?config=www.ora.com ##这行复制,后面有用
Press ENTER to finish...
[root@7CentOS tools]# vim /etc/awstats/awstats.www.ora.com.conf
LogFile="/var/log/httpd/access_log"
DirData="/var/lib/awstats"
[root@7CentOS awstats]# mkdir /var/lib/awstats
[root@7CentOS tools]# vim /etc/httpd/conf/httpd.conf
注:自己敲
LoadModule cgid_module modules/mod_cgi.so
LoadModule cgi_module modules/mod_cgi.so
注:下面的配置在你完成前几布的操作之后会自动生成到 HTTP 主配置文件最下方
Options None
AllowOverride None
# Order allow,deny
# Allow from all
Require all granted
[root@7CentOS tools]# cd /var/lib/
[root@7CentOS lib]# mkdir awstats
[root@7CentOS lib]# systemctl restart httpd
地址栏输入刚刚复制的,将 localhost 改成 你的域名
[root@7CentOS awstats]# cd /usr/local/awstats/
[root@7CentOS awstats]# cd tools/
[root@7CentOS tools]# chmod +x awstats_updateall.pl
[root@7CentOS tools]# ./awstats_updateall.pl now
Running '"/usr/local/awstats/wwwroot/cgi-bin/awstats.pl" -update -config=www.ora.com -configdir="/etc/awstats"' to update config www.ora.com
Create/Update database for config "/etc/awstats/awstats.www.ora.com.conf" by AWStats version 7.6 (build 20161204)
From data in log file "/var/log/httpd/access_log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 17
Found 0 dropped records,
Found 0 comments,
Found 0 blank records,
Found 0 corrupted records,
Found 0 old records,
Found 17 new qualified records.
但是每次都输入这么长一堆,就很烦,所以设置自动跳转
[root@7CentOS /]# vim /var/www/html/tz.html
[root@7CentOS /]# systemctl restart httpd
[root@7CentOS /]# cd /var/www/
[root@7CentOS www]# ls
cgi-bin html
[root@7CentOS www]# cd html/
[root@7CentOS html]# ls
ora tz.html
[root@7CentOS html]# mv tz.html ora/
[root@7CentOS /]# crontab -e
*/3 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
每三分钟刷新一次