一、虚拟主机

1.基于域名的虚拟主机

www.zhang.com   /var/html/www

blog.zhang.com  /var/html/blog

bbs.zhang.com   /var/html/bbs

#创建虚拟机目录

mkdir /var/html/{www,blog,bbs} -p

tree /var/html/

/var/html/

├── bbs

├── blog

└── www

#创建默认文件

touch /var/html/{www,blog,bbs}/index.html

tree /var/html/

/var/html/

├── bbs

│   └── index.html

├── blog

│   └── index.html

└── www

    └── index.html

#写入默认文件内容

for name in www blog bbs;do echo "http://$name.zhang.com" >/var/html/$name/index.html;done

for name in www blog bbs;do cat /var/html/$name/index.html;done

http://www.zhang.com

http://blog.zhang.com

http://bbs.zhang.com

#配置虚拟站点

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

1
2
3
4
5
6
7
8
<VirtualHost *:80>
    
ServerAdmin root@123.com
    
DocumentRoot 
"/var/html/www"
    
ServerName www.zhang.com
    
ServerAlias zhang.com
    
ErrorLog 
"logs/www-error_log"
    
CustomLog 
"logs/www-access_log" 
common
<
/VirtualHost
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<VirtualHost *:80>
    
ServerAdmin root@123.com
    
DocumentRoot 
"/var/html/blog"
    
ServerName blog.zhang.com
    
ServerAlias blog.com
    
ErrorLog 
"logs/blog-error_log"
    
CustomLog 
"logs/blog-access_log" 
common
<
/VirtualHost
>
<VirtualHost *:80>
    
ServerAdmin root@123.com
    
DocumentRoot 
"/var/html/bbs"
    
ServerName bbs.zhang.com
    
ServerAlias bbs.com
    
ErrorLog 
"logs/bbs-error_log"
    
CustomLog 
"logs/bbs-access_log" 
common
<
/VirtualHost
>

#修改主配置文件加载虚拟站点,去掉注释#号

vim /usr/local/httpd/conf/httpd.conf

1
2
Include conf
/extra/httpd-mpm
.conf
Include conf
/extra/httpd-vhosts
.conf

#增加虚拟目录访问权限

vim /usr/local/httpd/conf/httpd.conf

1
2
3
4
5
<Directory 
"/var/html"
>
    
Options FollowSymLinks
    
AllowOverride None
    
Require all granted
<
/Directory
>

#检查配置文件,重新加载配置文件

/etc/init.d/httpd -t

Syntax OK

/etc/init.d/httpd graceful

#测试访问站点,注意需要在客户机上配置hosts,配置域名解析

http://www.zhang.com

http://blog.zhang.com

http://bbs.zhang.com

2.基于端口的虚拟主机

#在主配置文件中增加端口监听

vim /usr/local/httpd/conf/httpd.conf

1
2
3
Listen 80
Listen 8000
Listen 9000

#修改虚拟主机端口号

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<VirtualHost *:80>
    
ServerAdmin root@123.com
    
DocumentRoot 
"/var/html/www"
    
ServerName www.zhang.com
    
ServerAlias zhang.com
    
ErrorLog 
"logs/www-error_log"
    
CustomLog 
"logs/www-access_log" 
common
<
/VirtualHost
>
<VirtualHost *:8000>
    
ServerAdmin root@123.com
    
DocumentRoot 
"/var/html/blog"
    
ServerName blog.zhang.com
    
ServerAlias blog.com
    
ErrorLog 
"logs/blog-error_log"
    
CustomLog 
"logs/blog-access_log" 
common
<
/VirtualHost
>
<VirtualHost *:9000>
    
ServerAdmin root@123.com
    
DocumentRoot 
"/var/html/bbs"
    
ServerName bbs.zhang.com
    
ServerAlias bbs.com
    
ErrorLog 
"logs/bbs-error_log"
    
CustomLog 
"logs/bbs-access_log" 
common
<
/VirtualHost
>

#检查配置文件,重新加载配置文件

/etc/init.d/httpd -t

Syntax OK

/etc/init.d/httpd graceful

3.基于ip的虚拟主机

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<VirtualHost 10.0.1:80>
    
ServerAdmin root@123.com
    
DocumentRoot 
"/var/html/www"
    
ServerName www.zhang.com
    
ServerAlias zhang.com
    
ErrorLog 
"logs/www-error_log"
    
CustomLog 
"logs/www-access_log" 
common
<
/VirtualHost
>
<VirtualHost 10.0.2:8000>
    
ServerAdmin root@123.com
    
DocumentRoot 
"/var/html/blog"
    
ServerName blog.zhang.com
    
ServerAlias blog.com
    
ErrorLog 
"logs/blog-error_log"
    
CustomLog 
"logs/blog-access_log" 
common
<
/VirtualHost
>
<VirtualHost 10.0.3:9000>
    
ServerAdmin root@123.com
    
DocumentRoot 
"/var/html/bbs"
    
ServerName bbs.zhang.com
    
ServerAlias bbs.com
    
ErrorLog 
"logs/bbs-error_log"
    
CustomLog 
"logs/bbs-access_log" 
common
<
/VirtualHost
>

二、apache日志轮询

1.使用cronolog软件实现日志轮询

tar zxvf cronolog-1.6.2.tar.gz 

cd cronolog-1.6.2

./configure 

make

make install

#查看cronolog软件安装路径

ll /usr/local/sbin/cronolog 

-rwxr-xr-x 1 root root 40438 4月  23 22:49 /usr/local/sbin/cronolog

#修改虚拟主机日志记录按天使用轮询

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

1
2
3
4
5
6
7
8
9
<VirtualHost *:9000>
    
ServerAdmin root@123.com
    
DocumentRoot 
"/var/html/bbs"
    
ServerName bbs.zhang.com
    
ServerAlias bbs.com
    
ErrorLog 
"logs/bbs-error_log"
    
CustomLog 
"|/usr/local/sbin/cronolog /usr/local/http/logs/access_bbs_%Y%m%d.log" 
combined
#增加上面一行,对BBS进行访问日志轮询,以天为单位
<
/VirtualHost
>

2.使用apache自带工具

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

1
2
3
4
5
6
7
8
9
<VirtualHost *:9000>
    
ServerAdmin root@123.com
    
DocumentRoot 
"/var/html/bbs"
    
ServerName bbs.zhang.com
    
ServerAlias bbs.com
    
ErrorLog 
"|/usr/local/httpd/bin/rotatelogs /usr/local/http/logs/access_bbs_%Y%m%d-%H:%M.log 5M"   
#以大小为单位轮询日志
    
CustomLog 
"|/usr/local/httpd/bin/rotatelogs /usr/local/http/logs/access_bbs_%Y%m%d-%H:%M.log 86400" 
combined
#对BBS进行访问日志轮询,86400为妙数,以天为单位
<
/VirtualHost
>

3、使用shell脚本加定时任务轮询日志文件

cat /usr/local/httpd/logpolling.sh

cd /usr/local/httpd/logs

mv www-access_log www-access_$(date +%F)_log

/usr/local/httpd/bin/apachectl graceful

echo "0 0 * * * /usr/local/httpd/logpolling.sh &>/dev/null" >>/var/spool/cron/root 

三、分析日志

#查看访问日志中访问次数最多的ip取最多的10个

1
2
3
awk 
'{print $1}' 
access_bbs_20170423.log |
sort
|
uniq 
-c|
sort 
-rn -k1|
head 
-10
#同上
awk 
'{++S[$1]} END {for (key in S) print S[key],key}' 
access_bbs_20170423.log |
sort 
-rn -k1|
head 
-10

四、修改隐藏版本信息

1、在编译安装之前更改

vim /root/tools/httpd-2.4.25/include/ap_release.h

1
2
3
4
5
6
7
#define AP_SERVER_BASEVENDOR "Apache Software Foundation"
#define AP_SERVER_BASEPROJECT "Apache HTTP Server" 
#define AP_SERVER_BASEPRODUCT "Apache"
#define AP_SERVER_MAJORVERSION_NUMBER 2  #主版本
#define AP_SERVER_MINORVERSION_NUMBER 4  #次版本号
#define AP_SERVER_PATCHLEVEL_NUMBER   25   
#define AP_SERVER_DEVBUILD_BOOLEAN    0

vim /root/tools/httpd-2.4.25/os/unix/os.h

1
#define PLATFORM "Unix"  #运行系统

2、在安装完后修改配置文件,隐藏版本信息

curl -I 10.0.0.4   #查看版本信息

1
2
3
4
5
6
7
8
HTTP
/1
.1 200 OK
Date: Sun, 23 Apr 2017 15:35:39 GMT
Server: Apache
/2
.4.25 (Unix) PHP
/5
.6.30
Last-Modified: Thu, 20 Apr 2017 17:33:10 GMT
ETag: 
"15-54d9c88ebe6ed"
Accept-Ranges: bytes
Content-Length: 21
Content-Type: text
/html

#去掉版本号

vim /usr/local/httpd/conf/extra/httpd-default.conf

1
2
ServerTokens Prod
ServerSignature Off

vim /usr/local/httpd/conf/httpd.conf #去掉前面的注释#号

1
Include conf
/extra/httpd-default
.conf

#重新加载配置

../bin/apachectl graceful

#重新查看版本信息

curl -I 10.0.0.4

1
2
3
4
5
6
7
8
HTTP
/1
.1 200 OK
Date: Sun, 23 Apr 2017 15:39:10 GMT
Server: Apache    
#此次已不再显示版本信息
Last-Modified: Thu, 20 Apr 2017 17:33:10 GMT
ETag: 
"15-54d9c88ebe6ed"
Accept-Ranges: bytes
Content-Length: 21
Content-Type: text
/html