Web服务器群集----Apache构建虚拟主机

一: 构建虚拟主机概述

  • 在同一台服务器中运行多个Web站点,其中每一个站点

并不独立占用一台真正的计算机

  • httpd支持的虚拟主机类型
    • 基于域名的虚拟主机
    • 基于IP地址的虚拟主机
    • 基于端口的虚拟主机

二: 基于域名

2.1: 应用示例

  • 应用示例

    构建2个虚拟Web站点

    • www.kgc.com IP地址为 192.168.100.110
    • www.kcce.com IP地址为192.168.100.110

    在浏览器中访问这两个域名时,分别显示不同的内容

    [root@www ~]# vim /usrl/local/httpd/conf/extra/httpd-vhosts.conf
    <VirtualHost *:80>      //<VirtualHost> 标记性语言标识  IP:端口
      DocumentRoot "/var/www/html/kgccom"   //虚拟主机站点路径,首页文件目录
      ServerName www.kgc.com                  //虚拟主机域名
      ErrorLog "Iogs/www.kgc.com.error log"   //错误日志
      CustomL og "logs/www.kgc.com.access_ log" common //访问日志
      <Directory "/var/www/html">           //子集标签,设置站点目录访问权限
        Require all granted      //设置网页文件允许所有主机访问
      </Directory>
    </VirtualHost>
    <VirtualHost *:80>
    DocumentRoot "/var/www/html/kccecom"
    ServerName www.kcce.com
    .......
    </VirtualHost>
    
    

2.2: 基于域名的试验案例

1.配置双网卡

[root@test01 ~]# cd /etc/sysconfig
[root@test01 sysconfig]# cd network-scripts/
[root@test01 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@test01 network-scripts]# vim ifcfg-ens36
[root@test01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.100.180
PREFIX=24
GATEWAY=192.168.100.2
DNS1=8.8.8.8
[root@test01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=e927c915-1f32-4f8e-b4d4-77c7a3ed4823
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.110
PREFIX=24
GATEWAY=192.168.100.2
DNS1=8.8.8.8

在客户机上要ping 通两个网卡

mark

2.安装Apache 和 域名解析服务

[root@test01 ~]# yum install httpd bind -y

3.修改域名解析配置

'修改主配置文件'
[root@test01 ~]# vim /etc/named.conf
.....
options {
        listen-on port 53 { any; };                 //修改为any
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };                  //修改为any
......
'首尾两个any'
'修改区域配置文件'
[root@test01 ~]# vim /etc/named.rfc1912.zones
.......
zone "kgc.com" IN {
        type master;
        file "kgc.com.zone";
        allow-update { none; };
};
zone "benet.com" IN {
        type master;
        file "benet.com.zone";
        allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0
'修改区域数据配置文件'
[root@test01 ~]# cd /var/named
[root@test01 named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopbac
[root@test01 named]# cp -p named.localhost kgc.com.zone
[root@test01 ~]# vim /var/named/kgc.com.zone

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www IN  A       192.168.100.110

[root@test01 named]# cp -p kgc.com.zone benet.com.zone

4.启动域名解析服务

[root@test01 named]# systemctl start named
[root@test01 named]# iptables -F
[root@test01 named]# setenforce 0

mark

mark

5.注意这里有坑

[root@test01 named]# cd /etc/httpd
[root@test01 httpd]# ls conf
httpd.conf  magic
[root@test01 httpd]# ls conf.d
autoindex.conf  README  userdir.conf  welcome.conf
[root@test01 httpd]# ls logs     '没有日志文件'
[root@test01 httpd]# systemctl start httpd
[root@test01 httpd]# ls logs
access_log  error_log
'日志文件只有服务安装并启动过后才生成'

6.配置Apache服务–基于域名

[root@test01 named]# cd /etc/httpd/conf
[root@test01 conf]# ls
 httpd.conf  magic
[root@test01 conf]# mkdir extra
[root@test01 conf]# cd extra/
[root@test01 extra]# vim vhost.conf         '手撕配置文件'

<VirtualHost *:80>
  DocumentRoot "/var/www/html/kgc"
  ServerName www.kgc.com
  ErrorLog "logs/www.kgc.com.error_log"
  CustomLog "logs/www.kgc.com.access_log" common
  <Directory "/var/www/html">
   Require all granted
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot "/var/www/html/benet"
  ServerName www.benet.com
  ErrorLog "logs/www.benet.com.error_log"
  CustomLog "logs/www.benet.com.access_log" common
  <Directory "/var/www/html">
   Require all granted
  </Directory>
</VirtualHost>
//注意:common 一定要写 要不然apache启动报错
[root@test01 extra]# systemctl restart httpd

7.配置Apache 站点目录首页文件

[root@test01 extra]# cd /var/www/html
[root@test01 html]# mkdir kgc benet
[root@test01 html]# ls
benet  kgc
[root@test01 html]# cd benet
[root@test01 benet]# vim index.html
[root@test01 benet]# vim index.html 
<h1>this is benet web</h1>
[root@test01 kgc]# vim index.html 
<h1>this is kgc web</h1>

8.在Apache主配置文件指子配置文件 ----注意漏掉有坑

[root@test01 kgc]# vim /etc/httpd/conf/httpd.conf
IncludeOptional conf.d/*.conf
Include /etc/httpd/conf/extra/vhost.conf    '添加此行 ,可以是相对路径也可以是绝对路径'

9.重启Apache服务查看监听的端口

[root@test01 benet]# systemctl restart httpd
[root@test01 extra]# netstat -lnput | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      11698/httpd 

10.客户机访问

mark

mark

三: 基于不同端口

3.1: 应用示例

  • 构建2个虚拟Web站点

    www.kcce.com ,IP地址,端口为192.168.100.110:80

    www.kcce.com ,IP地址,端口为192.168.100.110:8080

[root@www ~]# vim /sr/loclhttpd/confextra/ttpd-vhosts.conf
<VirtualHost 192.168.100.110:80>
DocumentRoot "/var/www/html/kccecom"
ServerName www.kcce.com
.....
</VirtualHost>
<VirtualHost 192.168.100.110:8080>
DocumentRoot "/var/www/html/kccepad"
ServerName www.kcce .com
</VirtualHost>
Listen 80
Listen 8080

3.2:基于端口的试验案例

[root@test01 extra]# vim vhost.conf
<VirtualHost *:80>
  DocumentRoot "/var/www/html/benet"
  ServerName www.benet.com
  ErrorLog "logs/www.benet.com.error_log"
  CustomLog "logs/www.benet.com.access_log" common
  <Directory "/var/www/html">
   Require all granted
  </Directory>
</VirtualHost>
<VirtualHost *:8080>                        '添加8080端口'
  DocumentRoot "/var/www/html/benet02"
  ServerName www.benet.com
  ErrorLog "logs/www.benet02.com.error_log"
  CustomLog "logs/www.benet02.com.access_log" common
  <Directory "/var/www/html">
   Require all granted
  </Directory>
</VirtualHost>
[root@test01 extra]# mkdir /var/www/html/benet02
[root@test01 extra]# vim /var/www/html/benet02/index.html
<h1>this is benet02 web</h1>
[root@test01 extra]# vim /etc/httpd/conf/httpd.conf    //主配置文件监听不同端口
........
Listen 192.168.100.110:80
Listen 192.168.100.110:8080
#Listen 80
添加
[root@test01 extra]# systemctl restart httpd
[root@test01 extra]# netstat -lnput | grep httpd
tcp        0      0 192.168.100.110:8080    0.0.0.0:*               LISTEN      15451/httpd         
tcp        0      0 192.168.100.110:80      0.0.0.0:*               LISTEN      15451/httpd 

mark

mark

四: 基于不同地址

4.1:应用示例

  • 构建2个虚拟Web站点

    www.kgc.com, IP地址为192.168.100.110

    www.kcce.com, IP地址为192.168.100.180

  • 在浏览器访问这两个IP时,分别显示不同的内容

    [root@www ~]# vim /usrlocal/httpd/conf/extra/httpd-vhosts.conf
    <VirtualHost 192.168.100.110:80>
    DocumentRoot "/var/www/html/kgccom"
    ServerName www.kgc.com
    ........
    </VirtualHost>
    <VirtualHost 192.168.100.180:80>
    DocumentRoot "/var/www/html/kccecom"
    ServerName www.kcce.com
    </VirtualHost>
    
    

4.2:基于不同地址的实验案例

[root@test01 extra]# pwd
/etc/httpd/conf/extra
[root@test01 extra]# vim vhost.conf

<VirtualHost 192.168.100.110:80>
  DocumentRoot "/var/www/html/kgc"
  ErrorLog "logs/www.kgc.com.error_log"
  CustomLog "logs/www.kgc.com.access_log" common
  <Directory "/var/www/html">
   Require all granted
  </Directory>
</VirtualHost>
 
<VirtualHost 192.168.100.180:80>
  DocumentRoot "/var/www/html/kgc02"
  ErrorLog "logs/www.kgc02.com.error_log"
  CustomLog "logs/www.kgc02.com.access_log" common
  <Directory "/var/www/html">
   Require all granted
  </Directory>
</VirtualHost>

[root@test01 extra]# mkdir /var/www/html/kgc02
[root@test01 extra]# cd /var/www/html/kgc02
[root@test01 kgc02]# vim /var/www/html/kgc02/index.html
<h1>this is kgc02 web</h1>
~ 
[root@test01 extra]# vim /etc/httpd/conf/httpd.conf 
.......
Listen 192.168.100.110:80
Listen 192.168.100.180:80
#Listen 80
.......
[root@test01 extra]# systemctl restart httpd
[root@test01 extra]# netstat -ntap | grep httpd
tcp        0      0 192.168.100.180:80      0.0.0.0:*               LISTEN      15674/httpd         
tcp        0      0 192.168.100.110:80      0.0.0.0:*               LISTEN      15674/httpd 

mark

mark

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值