Linux系统架构-----Apache上构建虚拟主机

目录

一.虚拟web主机的概述

二.安装基于域名的虚拟web主机

三.安装基于端口号的虚拟主机

四.安装基于IP地址的虚拟机


一.虚拟web主机的概述

  • 虚拟web主机指的是在同一台服务器中运行多个web站点,其中每个一个站点并不会独自占用一台真正的计算机
  • 通过虚拟web主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建以及运行成本
  • httpd服务支持的虚拟主机的类型有以下三种:
  • 基于域名:每个虚拟主机使用不同的域名但是IP地址和端口号相同,打开不同的域名看见不同的web页面
  • 基于端口号:使用不同TCP端口号
  • 基于IP地址:每个虚拟主机的IP地址不同,而且对应的域名也不相同

二.安装基于域名的虚拟web主机

  • 安装httpd软件包和bind软件包
[root@localhost ~]# yum install bind httpd -y

配置DNS服务

  • 配置主配置文件
[root@localhost ~]# vim /etc/named.conf 

options {
        listen-on port 53 { 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; };
......
  • 配置区域文件
[root@localhost ~]# vim /etc/named.rfc1912.zones

zone "yun.com" IN {
        type master;
        file "yun.com.zone";
        allow-update { none; };
};


zone "data.com" IN {
        type master;
        file "data.com.zone";
        allow-update { none; };
};
  • 配置区域数据文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]# cp -p named.localhost yun.com.zone
[root@localhost named]# cp -p named.localhost data.com.zone
[root@localhost named]# vim yun.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.43.164
[root@localhost named]# vim data.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.43.164

  • 关闭防火墙,开启服务

[root@192 conf]# systemctl stop firewalld
[root@192 conf]# setenforce 0
[root@192 conf]# systemctl restart named
[root@192 conf]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.164  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::fe27:a784:dd8d:8487  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:de:a0:aa  txqueuelen 1000  (Ethernet)
        RX packets 427  bytes 37092 (36.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 162  bytes 17673 (17.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
......

[root@192 conf]# 
  • 测试DNS服务器的功能,修改客户机的dns服务器的P地址

[root@192 ~]# vim /etc/resolv.conf

# Generated by NetworkManager
search localdomain
nameserver 192.168.43.164

[root@192 ~]# nslookup www.yun.com
Server:		192.168.43.164
Address:	192.168.43.164#53

Name:	www.yun.com
Address: 192.168.43.164

[root@192 ~]# nslookup www.data.com
Server:		192.168.43.164
Address:	192.168.43.164#53

Name:	www.data.com
Address: 192.168.43.164

[root@192 ~]# 

配置基于域名的httpd服务

  • 在配置文件的父目录中创建虚拟主机的目录./demo,且在./demo目录下创建虚拟主机配置文件
[root@192 conf]# cd /etc/httpd/conf
[root@192 conf]# ls
httpd.conf  magic
[root@192 conf]# mkdir demo
[root@192 conf]# ls
demo  httpd.conf  magic
[root@192 conf]# vim ./demo/vhost.conf

<VirtualHost 192.168.43.164:80>                //创建虚拟主机,描述IP地址和端口号
        DocumentRoot "/var/www/html/yun"       //添加主页面目录yun
        ServerName www.yun.com                  //定义域名
        Errorlog "/etc/httpd/logs/yun.errorlogs"        //定义错误日志所在的文件位置
        Customlog "/etc/httpd/logs/yun.accesslogs" common  //定义正确日志所在的文件位置
        <Directory "/var/www/html">             //添加访问主页面的权限
                Require all granted              //允许所有人访问主页面
        </Directory>
</VirtualHost>

<VirtualHost 192.168.43.164:80>
        DocumentRoot "/var/www/html/data"
        ServerName www.data.com
        Errorlog "/etc/httpd/logs/data.errorlogs"
        Customlog "/etc/httpd/logs/data.accesslogs" common
        <Directory "/var/www/html">
                Require all granted
        </Directory>
</VirtualHost>
  • 不同域名之下的主页面文件yun和data

[root@192 conf]# cd /var/www/html
[root@192 html]# ls
[root@192 html]# mkdir yun
[root@192 html]# mkdir data
[root@192 html]# ls
data  yun
[root@192 html]# vim ./data/index.html
<h1>This is DATA</h1>

[root@192 html]# vim ./yun/index.html
<h1>This is YUN</h1>
  • 开启服务

[root@192 html]# systemctl start httpd
[root@192 html]# netstat -natp | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      3011/httpd   
  • 验证服务是否正常

三.安装基于端口号的虚拟主机

  • 安装httpd服务(不同于上一服务器)
[root@192 ~]# rpm -q httpd
未安装软件包 httpd 
[root@192 ~]# yum install -y httpd
  • 在httpd的配置文件的父目录中,创建编辑虚拟主机目录case和配置文件vhost.conf
[root@192 conf]# ls
httpd.conf  magic
[root@192 conf]# mkdir case
[root@192 conf]# ls
case  httpd.conf  magic
[root@192 conf]# vim ./case/vhost.conf
<VirtualHost 192.168.43.165:80>
        DocumentRoot "/var/www/html/yun"             //定义主页面文件的目录
        Errorlog "/etc/httpd/logs/error_logs"        //定义错误日志的文件路径
        Customlog "/etc/httpd/logs/access_logs" common //定义正确日志的文件路径
        <Directory "/var/www/html">           //定义用户权限
                Require all granted
        </Directory>
</Virtualhost>

<VirtualHost 192.168.43.165:8080>
        DocumentRoot "/var/www/html/data"
        Errorlog "/etc/httpd/logs/error_logs"
        Customlog "/etc/httpd/logs/acces_logs" common
        <Directory "/var/www/html">
                Require all granted
        </Directory>
</VirtualHost>
  • 创建主页面目录和文件
[root@192 conf]# cd /var/www/html
[root@192 html]# ls
[root@192 html]# mkdir yun data
[root@192 html]# ls
data  yun
[root@192 html]# vim data/index.html
[root@192 html]# echo "<h1>This is data</h1>" > ./data/index.html
[root@192 html]# ls data
index.html
[root@192 html]# cat data/index.html
<h1>This is data</h1>
[root@192 html]# echo "<h1>This is YUN</h1>" > ./yun/index.html
[root@192 html]# ls yun
index.html
[root@192 html]# 

  • 在httpd的主配置文件中添加参数
[root@192 conf]# ls
case  httpd.conf  magic
[root@192 conf]# vim httpd.conf 

Include /etc/httpd/conf/case
Listen 192.168.43.165:80
Listen 192.168.43.165:8080
  • 关闭防火墙,开启服务
[root@192 conf]# systemctl stop firewalld
[root@192 conf]# setenforce 0
[root@192 conf]# systemctl start httpd
[root@192 conf]# netstat -natp | grep httpd
tcp        0      0 192.168.43.165:8080     0.0.0.0:*               LISTEN      37354/httpd         
tcp        0      0 192.168.43.165:80       0.0.0.0:*               LISTEN      37354/httpd      
  • 验证服务是否正常

 

 

四.安装基于IP地址的虚拟机

  • 另外添加网卡
[root@192 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.166  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::fe27:a784:dd8d:8487  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:de:a0:aa  txqueuelen 1000  (Ethernet)
        RX packets 89  bytes 10539 (10.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 94  bytes 10470 (10.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.138  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::146c:7aff:cfcc:90d5  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:de:a0:b4  txqueuelen 1000  (Ethernet)
        RX packets 54  bytes 6642 (6.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 31  bytes 4838 (4.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

......
[root@192 ~]# 
  • 安装httpd服务
[root@192 ~]# rpm -q httpd
未安装软件包 httpd 
[root@192 ~]# yum install httpd -y
  • 在httpd的配置文件的父目录中,创建编辑虚拟主机目录day和配置文件vhost.conf
[root@192 ~]# cd /etc/httpd/conf
[root@192 conf]# ls
httpd.conf  magic
[root@192 conf]# mkdir day
[root@192 conf]# ls
day  httpd.conf  magic
[root@192 conf]# vim day/vhost.conf
<VirtualHost 192.168.43.166:80>
        DocumentRoot "/var/www/html/yun"
        Errorlog "/etc/httpd/logs/error.yun_logs"
        Customlog "/etc/httpd/logs/access.yun_logs" common
        <Directory "/var/www/html">
                Require all granted
        </Directory>
</VirtualHost>

<VirtualHost 192.168.43.138:80>
        DocumentRoot "/var/www/html/data"
        Errorlog "/etc/httpd/logs/error.data_logs"
        Customlog "/etc/httpd/logs/access.data_logs" common
        <Directory "/var/www/html">
                Require all granted
        </Directory>
</VirtualHost>
~               
  • 在httpd的主配置文件添加参数(需要ipv6的监听关闭)
Include /etc/httpd/conf/day/vhost.conf
Listen 192.168.43.166:80
Listen 192.168.43.138:80
  • 创建首页面的文件
[root@192 conf]# cd /var/www/html/
[root@192 html]# ls
[root@192 html]# mkdir yun data
[root@192 html]# ls
data  yun
[root@192 html]# echo "<h1>YUN</h1>" > ./yun/index.html
[root@192 html]# echo "<h1>DATA</h1>" > ./data/index.html
  • 关闭防火墙,开启服务且检查
[root@192 html]# systemctl stop firewalld
[root@192 html]# setenforce 0
[root@192 html]# systemctl start httpd
[root@192 html]# netstat -natp | grep httpd
tcp        0      0 192.168.43.138:80       0.0.0.0:*               LISTEN      2752/httpd          
tcp        0      0 192.168.43.166:80       0.0.0.0:*               LISTEN      2752/httpd  
  • 验证服务是否正常启动

 

 

注:在配置虚拟主机的文件时,需要注意路径位置,还有httpd中的主配置文件需要加入必要参数

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值