• 第四十四天-Apache虚拟主机测试


    一、虚拟机主机简介

       部署多个站点,每个站点,希望用不同的域名和站点目录,或者是不同的端口,或不同的ip,就需要虚拟主机功能。简单的说一个http服务要配置多个站点,就需要虚拟主机。

    二、虚拟主机分类

    1. 基于域名
    2. 基于端口
    3. 基于ip

    所谓的基于XX,就是靠XX来区分不同的站点,支持各种混合,N多个虚拟主机。

    三、基于域名虚拟主机实例

    域名    			站点
    www.lrz.com		 /var/html/www
    blog.lrz.com     /var/html/blog
    bbs.lrz.com		 /var/html/bbs
    

    1、准备工作,创建虚拟主机目录

    [root@A extra]# mkdir -p /var/html/{www,blog,bbs}
    [root@A extra]# touch /var/html/{www,blog,bbs}/index.html
    [root@A www]# for name in www blog bbs ;do echo "http://$name.oldboy.com" >/var/html/$name/index.html;done
    
    [root@A www]# for name in www blog bbs ;do cat /var/html/$name/index.html;done
    http://www.oldboy.com
    http://blog.oldboy.com
    http://bbs.oldboy.com
    

    2、修改配置文件

    [root@A conf]# grep ^Include httpd.conf 
    Include conf/extra/httpd-vhosts.conf    #打开加载,加载虚拟主机配置文件
    
    [root@A extra]# vim httpd-vhosts.conf
    <VirtualHost *:80>
        ServerAdmin 1126785053@qq.com      #配置管理员邮箱
        DocumentRoot "/var/html/www"      #配置虚拟主机目录
        ServerName www.lrz.com          #配置域名
        ErrorLog "logs/www-error_log"      #配置错误日志路径
        CustomLog "logs/www-access_log" common   #配置访问日志路径
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerAdmin 1126785053@qq.com
        DocumentRoot "/var/html/blog"
        ServerName blog.lrz.com
        ErrorLog "logs/blog-error_log"
        CustomLog "logs/blog-access_log" common
    </VirtualHost>
    <VirtualHost *:80>
        ServerAdmin 1126785053@qq.com
        DocumentRoot "/var/html/bbs"
        ServerName bbs.lrz.com
        ErrorLog "logs/bbs-error_log"
        CustomLog "logs/bbs-access_log" common
    </VirtualHost>
    <Directory /var/html>
        Options FollowSymLinks #FollowSymLinks表示禁止使用符号链接,Indexes表示允许目录浏览
        AllowOverride None    #表示禁止用户对目录配置文件(.htaccess进行修改)重载
        Order allow,deny     #以allow优先处理,没有明确说明允许的话都将拒绝访问
        allow from all      #允许所有的访问
    </Directory>
    

    3、修改hosts 文件

    xiaorui@xiaorui:~$ cat /etc/hosts
    127.0.0.1	localhost
    192.168.1.113 www.lrz.com
    192.168.1.113 blog.lrz.com
    192.168.1.113 bbs.lrz.com
    

    4、优雅启动apache

    [root@A apache]# bin/apachectl graceful
    httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.1.110 for ServerName
    

    解决办法:
    将httpd.conf 里第99行,修改ServerName 127.0.0.1:80

    [root@A apache]# bin/apachectl graceful
    [root@A apache]# 
    

    再启动就不报错误了
    提示:这里的graceful参数,而不是restart参数,graceful表示优雅重启,这个参数可以在重启时使正在浏览的访问的用户无感知,即重启时不会强行中断用户访问,而是处理完毕请求后再重新启动,这个graceful参数在生产环境中那是非常重要,请在重启时务必使用之代替restart参数。

    5、Apache日志格式详细说明

      通用日志格式(CommonLog Format)
      组合日志格式(CombinedLOG Format)

    6、Apache的日志轮询

    安装日志轮询工具cronolog

    cd tools/
    wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
    tar xf cronolog-1.6.2.tar.gz 
    cd cronolog-1.6.2
    ./configure 
    make 
    make install
    cd /usr/local/sbin/
    pwd
    

    生成的命令

    [root@A sbin]# ll /usr/local/sbin/
    总用量 52
    -rwxr-xr-x. 1 root root 40446 1月  10 04:40 cronolog
    -rwxr-xr-x. 1 root root  9673 1月  10 04:40 cronosplit
    

    提示:cronolog轮询日志的正确写法,被轮询的日志路径要写全路径
    这是大多数网站的常规配置方法(按天记录日志,日志不会自动覆盖)
    修改配置文件日志

    <VirtualHost *:80>
        ServerAdmin 1126785053@qq.com
        DocumentRoot "/var/html/www"
        ServerName www.lrz.com
        ErrorLog "|/usr/local/sbin/cronolog /application/apache/logs/www-error_%Y%m%d.log" 
        CustomLog "|/usr/local/sbin/cronolog /application/apache/logs/www-access_%Y%m%d.log" combined
    </VirtualHost>
    
    [root@A logs]# ls -lh
    总用量 56K
    srwx------. 1 www  root    0 1月  10 05:01 cgisock.1548
    -rw-r--r--. 1 root root    5 1月  10 05:01 httpd.pid
    -rw-r--r--. 1 root root  938 1月  10 05:02 www-access_20160110.log
    -rw-r--r--. 1 root root   99 1月  10 05:02 www-error_20160110.log
    

    四、案例

    案例1:apache不记录图片的日志

    答:因为统计日志PV时一个页面才算一个PV,而图片,JS,CSS等只是图片的元素,如果记录在日志里,然后按日志行进行计算PV就不准确了,所以可以考虑不记录图片等日志。

    <FilesMatch ".(css|js|gif|jpg|ico|swf)">
    	setEnv IMAG 1
    </FilesMatch>
    
    CustomLog "|/usr/local/sbin/cronolog /application/apache/logs/www-access_%Y%m%d.log" combined  env=!IMAG
    

    案例2:RS服务器不记录负载均衡健康检查日志

    虚拟主机不记录负载均衡向下健康检查文件的日志(check.txt)

    	SetEnvIf Request_URI "^/check.txt$" dontlog
    	CustomLog "|/usr/local/sbin/cronolog /application/apache/logs/www-access_%Y%m%d.log" combined  env=!dontlog
    

    案例3:日志统计

    [root@server4host nginx]# awk '{print $1}' access.log-20160110|sort|uniq -c|sort -rn |head -10
      23220 61.172.242.213
      21555 61.172.242.219
      20736 123.135.52.66
      18403 61.172.242.212
      18403 61.172.242.210
      17308 61.172.242.214
      17059 61.172.242.218
      16111 61.172.242.222
      15540 61.172.242.216
      14414 61.172.242.215
    
    
    [root@server4host nginx]# awk '{++S[$1]} END {for(key in S) print S[key],key}' access.log-20160111|sort -rn -k1|head -10
    162216 5.9.83.211
    41546 88.198.180.41
    37858 115.29.178.56
    24147 61.172.242.213
    22794 61.172.242.214
    19257 61.172.242.218
    18371 61.172.242.222
    18283 61.172.242.219
    16434 123.135.52.66
    16311 61.172.242.215
    
  • 相关阅读:
    expects parameter 1 to be resource, array given 错误
    PHP 多维数组处理,将1维或者多维数组处理成字符串
    uchome realname_set()参数
    ASP.NET 开源CMS汇总
    微软 Visual Studio .net 2005 常用插件搜罗
    C#中DllImport用法和路径问题
    XSLT输出的HTML空元素导致jQurey解析出错
    hdu1874畅通工程续
    Super Prime
    Beautiful Year
  • 原文地址:https://www.cnblogs.com/migongci0412/p/5122948.html
Copyright © 2020-2023  润新知