一、虚拟机主机简介

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

二、虚拟主机分类

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

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

2.1)安装httpd

 [root@s- ~]# yum install httpd* -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
...省略若干...
[root@s- conf]# systemctl start httpd #启动httpd
[root@s- conf]#
[root@s- conf]# systemctl enable httpd #加入开机启动httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@s- conf]#

yum 安装htppd的默认安装目录:

服务目录 /etc/httpd
主配置文件 /etc/httpd/conf/httpd.conf
网站数据目录 /var/www/html
访问日志 /var/log/httpd/access_log
错误日志 /var/log/httpd/error_log

在httpd服务程序主配置文件中最为常用的参数包括有:

ServerRoot  服务目录
ServerAdmin 管理员邮箱
User 运行服务的用户
Group 运行服务的用户组
ServerName 网站服务器的域名
DocumentRoot 网站数据目录
Listen 监听的IP地址与端口号
DirectoryIndex 默认的索引页页面
ErrorLog 错误日志文件
CustomLog 访问日志文件
Include 需要加载的其他文件
Timeout 网页超时时间,默认为300秒.

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

这里是修改了网站是主目录大约是/etc/httpd/conf/httpd.conf下119行的配置DocumentRoot

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

1.创建虚拟主机目录

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

2.修改配置文件

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

3.修改本地的hosts文件(用于DNS解析)

4、优雅启动apache

[root@s-28 apache]# /application/apache/bin/apachectl graceful
httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.1.7 for ServerName
解决办法:
将httpd.conf 里第99行,修改ServerName 127.0.0.1:

说明:这里可以用restart重启,但是用graceful更好,这个参数可以在处理完毕请求后再重新启动,即重启时不会强行中断用户访问,所以建议用graceful这个参数

5、Apache日志

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

2)   安装日志轮询工具cronolog(链接:https://pan.baidu.com/s/1xZBQbgahwCdv8l47kWz2LQ 提取码:7zd3 )

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

查看 ll /usr/local/sbin/ 可以看到俩文件cronolog 和cronosplit权限都是755 的权限

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

<VirtualHost *:>
ServerAdmin *@qq.com
DocumentRoot "/var/html/www"
ServerName www.qzl.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>

四.举例子

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

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

<FilesMatch "\.(css|js|gif|jpg|ico|swf)">
setEnv IMAG
</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:日志统计

awk '{print $1}' 文件名字|sort|uniq -c|sort -rn |head -

庖丁解牛,高大上的日志统计命令:

awk '{++S[$1]} END {for(key in S) print S[key],key}' 文件名字|sort -rn -k1|head -

首先++S是一个名字为S的数组,for循环key是在名字为S的数组中取值,然后按照key的默认格式打印出来,在sort进行排序,

 

Apache虚拟主机测试的更多相关文章

  1. Apache虚拟主机配置

    在一个Apache服务器上可以配置多个虚拟主机,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录.Apache虚拟主机配置有3中方法:基于IP配置.基于域名配置和基于端口配置,这里介 ...

  2. 烂泥:apache虚拟主机的学习与应用

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 要配置apache的虚拟主机,我们需要分以下几步进行: 1. 检查apache虚拟主机模块 2. 开启apache虚拟主机功能 3. httpd-vho ...

  3. Apache虚拟主机配置(多个域名访问多个目录)

    Apache虚拟主机配置(多个域名访问多个目录) 为了方便管理虚拟主机,我决定使用一种方法,那就是修改httpd-vhosts.conf文件. 第一步首先要使扩展文件httpd-vhosts.conf ...

  4. 配置apache虚拟主机的实例总结

    如何实现apache虚拟主机配置. 1.基于ip地址的虚拟主机Listen 80<VirtualHost 172.20.30.40> DocumentRoot /home/httpd/ht ...

  5. Linux Apache虚拟主机配置方法

    apache 虚拟主机配置 注意: 虚拟主机可以开很多个 虚拟主机配置之后,原来的默认/etc/httpd/httpd.conf中的默认网站就不会生效了 练习: 主机server0 ip:172.25 ...

  6. Apache虚拟主机配置(多个域名访问多个目录)(转)

    Apache虚拟主机配置(多个域名访问多个目录) 为了方便管理虚拟主机,我决定使用一种方法,那就是修改httpd-vhosts.conf文件. 第一步首先要使扩展文件httpd-vhosts.conf ...

  7. wamp开发环境配置之配置Apache虚拟主机

    网站建设人员在本地测试时,常常不是一个网站,那怎么能像输入域名一样在地址栏上面输入“域名”就能本地访问该网站呢?这里就要配置Apache虚拟主机了! 1.找到apache\conf\httpd.con ...

  8. 配置LANMP环境(7)-- 配置nginx反向代理,与配置apache虚拟主机

    一.配置nginx反向代理 1.修改配置文件 vim /etc/nginx/nginx.conf 在35行http下添加一下内容: include /data/nginx/vhosts/*.conf; ...

  9. apache虚拟主机配置及解析

    Apache虚拟主机配置及解析 1.修改httpd-vhosts.conf 打开apache(Apache24)/conf/extra/httpd-vhosts.conf文件,添加虚拟主机信息,可以这 ...

随机推荐

  1. @property的4类修饰符

    一.读写性修饰符:readwrite | readonly readwrite:表明这个属性是可读可写的,系统为我们创建这个属性的setter和getter方法. readonly:表明这个属性只能读 ...

  2. JVM虚拟机 - Class类文件结构

    概述 Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎都是程序运行的必要数据 ...

  3. 方法和函数,isinstance/issubclass/type以及反射

    一丶,isinstance/issubclass/type 1.issubclass检查第一个参数是否是第二个参数的 子子孙孙类 class Foo(): pass class Boo(Foo): p ...

  4. es6-异步应用

    异步编程对 JavaScript 语言太重要.Javascript 语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可.本章主要介绍 Generator 函数如何完成异步操作. 传 ...

  5. IOS微信6.7.4输入框失去焦点,软键盘关闭后,被撑起的页面无法回退到原来正常的位置

    近期在开发微信H5页面时碰到这个问题,如图,软键盘弹起后,若原输入框被遮挡,页面整体将会上移,然而当输入框失焦,软键盘收起后,页面未恢复,这也是ios的微信版本更新6.7.4之后才遇到的bug. 目前 ...

  6. System Center Configuration Manager 2016 必要条件准备篇(Part1)

    步骤4.创建系统管理容器 SCCM 2016 配置管理系列(Part 1- 4) 介绍AD01上配置了Active Directory域服务(ADDS),然后将Configuration Manag ...

  7. [转贴] ASP.NET -- Web Service (.asmx) & JSON

    [转贴] ASP.NET -- Web Service (.asmx) & JSON 以前没做过,但临时被要求 ASP.NET Web Service 要传回 JSON格式 找到网络上两篇好文 ...

  8. World Wind Java开发之五——读取本地shp文件(转)

    http://blog.csdn.net/giser_whu/article/details/41484433 World Wind Java 使用IconLayer图层类表现点和多点数据,使用Ren ...

  9. go语言,爬取百度贴吧指定贴所有内容

    初级爬虫,为了学习一下常用的goquery. goquery 配置 go get https://github.com/PuerkitoBio/goquery 会提示不支持https方式 解决方案: ...

  10. Unix系统中常用的信号含义

    http://blog.csdn.net/u012349696/article/details/50687462 编号为1 ~ 31的信号为传统UNIX支持的信号,是不可靠信号(非实时的),编号为32 ...