一、虚拟主机

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

版权声明:原创作品,如需转载,请注明出处。否则将追究法律责任
本文转自 80后小菜鸟 51CTO博客,原文链接:http://blog.51cto.com/zhangxinqi/1918702

apache虚拟主机、日志轮询、日志统计、去版本优化相关推荐

  1. apache的“按周配置访问日志轮询”,需要安装cronolg软件

    在学习第9课课前×××时,3月18日遇到过的1个问题有必要记录一下. 在这部分的答案讲解视频里,最后1题的"上机考试"题,第2题要求:apache的虚拟主机"按周配置访问 ...

  2. Apache服务一日志轮询(cronolog)

    1.cronolog介绍 2.安装日志轮询工具cronolog 3.修改配置文件(%Y%m%d 按天轮询) 4.重启Apache服务 5.测试 6.轮询时间 6.1按周建立目录按天轮询 6.2按小时轮 ...

  3. Nginx的继续深入(日志轮询切割,重写,负载均衡等)

    Nginx的访问日志轮询切割 通常什么情况Nginx会把所有的访问日志生成到一个制定的访问日志文件access.log里面,但时间一长,日志个头很大不利于日志的分析和处理. 有必要对Nginx日志进行 ...

  4. Nginx 访问日志轮询切割

    Nginx 访问日志轮询切割脚本 -------------------------------------------------------------------- 注:如果你对python感兴 ...

  5. Linux下Apache虚拟主机配置

    说明: Apache版本:httpd-2.2.31 Apache安装目录:/usr/local/apache 目的: 配置Apache虚拟主机 具体操作: 1.修改Apache主配置文件 cp /us ...

  6. 如何配置Apache虚拟主机?(基于IP、基于端口、基于域名)

    一.Apache虚拟机配置前的准备工作 1.下载yum源 2.安装yum包 3.安装httpd包 4.查看并关闭selinux 5.取消中心主机 cd /etc/httpd/conf vim http ...

  7. 在CentOS 8上安装与配置Apache虚拟主机

    实验环境 操作系统:Centos 8 web应用:apache 内网IP:192.168.3.21 shell执行:root 以root或具有sudo权限的用户身份登录执行如下操作. 主配置文件路径: ...

  8. Apache虚拟主机相关配置

    目录 1.Apache默认虚拟主机 2.Apache用户认证 3.域名跳转 4.Apache访问日志 5.访问日志不记录静态文件 6.访问日志切割 7.静态元素过期时间 扩展 1.Apache默认虚拟 ...

  9. CentOS下配置apache虚拟主机

    1.apache虚拟主机配置: (1)基于域名的配置(同一个IP不同域名)方法:    ①添加域名到hosts文件中, 命令vim /etc/hosts 添加的内容: 192.168.142.140 ...

最新文章

  1. undb php,显示html过滤报错,我不知道如何修改了。
  2. Spring(3)——装配 Spring Bean 详解
  3. 在Android设备部署PyTorch模型
  4. 做技术的为什么很难发财?
  5. mysql utf 8bm4 没用_不要在 MySQL 中使用“utf8”,請使用“utf8mb4”
  6. 问题:AmqpConnectException: java.net.ConnectException: Connection refused: connect
  7. python mysql实例_Python使用MySQL数据库的方法以及一个实例
  8. oracle 外部os授权,外部OS认证的过程
  9. 从0到1亿美元 ---- PopCap创始人John Vechey自述(zt)
  10. vue.js2.0 新手开发_vue.js2.0实战(1):搭建开发环境及构建项目
  11. Arturia 发布 SQ80 V 80年代经典音色合成器软件
  12. JavaFX调用虚拟键盘
  13. uva 1647(规律)
  14. vue 中 highcharts 的简单使用
  15. python 多线程利器-tomorrow
  16. 170 FPS!YolactEdge:边缘设备上的实时实例分割,已开源!
  17. 世界上最遥远的距离 泰戈尔
  18. 综述 | 358 篇论文, 最新知识图谱KG综述
  19. 云里黑白第二回——Intel英特尔 冥王峡谷 系统更新
  20. 项目中使用jetty

热门文章

  1. easyui弹出层在最顶层显示跳出iframe框架通用javascript代码
  2. 读【重构】(3)——感悟重构——Decompose Conditional(分解条件式)
  3. 梦想与现实之间的距离
  4. Linux-Windows-Mac-RabbitMQ安装教程
  5. 如何使用JMeter 对Dubbo接口进行测试
  6. Android6.0以上打电话动态权限
  7. 反三角函数在线计算机,f的换算(反三角函数计算器在线)
  8. 三星android6.0推送,三星推送Android6.0 满屏小清新的风味!
  9. mysql空间数据类型的使用_MYSQL 空间数据类型用法
  10. 从新获取jar_SpringBoot配置文件放在jar外部