6、高性能web架构之Apche虚拟主机配置

构建web虚拟主机:

 

一、前言:

虚拟web主机指的是在同一台服务器中运行多个web站点,其中的每一个站点实际上并不独立占用整个服务器。因此被称为“虚拟的”web主机,通过虚拟web主机服务可以充分利用服务器的硬件资源,从而大大降低了网站构建及运行成本。

使用httpd可以非常方便地构建虚拟机主机服务器,只需要运行一个httpd服务就能够同时支撑大量的web站点。Httpd支持的虚拟主机类型包括以下三种。

 

  1. 基于域名:为每个虚拟主机使用不同的域名,但是其对应的ip地址是相同的,例如:www.aaa.com和www.bbb.com 站点的ip地址都是192.168.10.106.这是使用最为普遍的虚拟web主机类型。
  2. 基于ip地址,为每个虚拟主机使用不同的ip,且各自对应的ip地址也不相同。这种方式需要为都无权配置多个网络接口,因此应用并不是非常广泛。
  3. 基于端口:这种方式并不适用域名、ip地址来区分不同的站点内容,而是使用了不同的tcp端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。

 

 

二、基于域名的虚拟机配置方法:

 

1、为虚拟主机配置域名解析(上几张安装了DNS服务,在里面添加两条A记录即可):

 

[root@linux-node3 ~]# cat /var/named/server.com.zone

$TTL 3600

@  SOA  server.com. admin.server.com. (

                                        2000    ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

@               IN      NS      linux-node3.server.com.

                IN      NS      linux-node4.server.com.

linux-node3      IN      A       192.168.10.103

linux-node4      IN      A       192.168.10.104

abc             IN      A       192.168.10.104

vip             IN      A       192.168.10.66

aaa             IN      A       192.168.10.106

bbb             IN      A       192.168.10.106

 

 

 

2、测试两条A记录是否能解析:

[root@linux-node6 ~]# cat /etc/resolv.conf

# Generated by NetworkManager

search server.com

nameserver 192.168.10.103   #指向自己指定的DNS服务器

[root@linux-node6 ~]#

[root@linux-node6 ~]# nslookup aaa.server.com

Server:         192.168.10.103

Address:        192.168.10.103#53

 

Name:   aaa.server.com

Address: 192.168.10.106

 

[root@linux-node6 ~]#

[root@linux-node6 ~]# nslookup bbb.server.com

Server:         192.168.10.103

Address:        192.168.10.103#53

 

Name:   bbb.server.com

Address: 192.168.10.106

 

 

 

 

3、为虚拟主机准备网页文档:

[root@linux-node6 ~]# mkdir /usr/local/httpd/htdocs/aaa

[root@linux-node6 ~]# mkdir /usr/local/httpd/htdocs/bbb

[root@linux-node6 ~]# echo "<h1>aaa.server.com</h1>" > /usr/local/httpd/htdocs/aaa/index.html

[root@linux-node6 ~]# echo "<h1>bbb.server.com</h1>" > /usr/local/httpd/htdocs/bbb/index.html

 

4、添加虚拟主机配置:

[root@linux-node6 ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf   #最后面添加这些内容

<Directory "/usr/local/httpd/htdocs">

    Order allow,deny

    Allow from all

</Directory>

 

<VirtualHost 192.168.10.106>

    DocumentRoot "/usr/local/httpd/htdocs/aaa"

    ServerName aaa.server.com

    ErrorLog "logs/aaa.server.com-error_log"

    CustomLog "logs/aaa.server.com-access_log" common

</VirtualHost>

 

<VirtualHost 192.168.10.106>

    DocumentRoot "/usr/local/httpd/htdocs/bbb"

    ServerName bbb.server.com

    ErrorLog "logs/bbb.server.com-error_log"

    CustomLog "logs/bbb.server.com-access_log" common

</VirtualHost>

 

 

[root@linux-node6 ~]# vi /usr/local/httpd/conf/httpd.conf

Include conf/extra/httpd-vhosts.conf    //去掉#号,加载此Include

 

 

 

5、验证:

 

 

 

 

 

三、基于ip的虚拟机配置方法:

1、这里我要多加一个网卡,然后配置新网的ip为192.168.10.107:

[root@linux-node6 ~]# cd /etc/sysconfig/network-scripts/

[root@linux-node6 network-scripts]# cp ifcfg-eno16777736 ifcfg-ens37

[root@linux-node6 network-scripts]# vi ifcfg-ens37

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_FAILURE_FATAL=no

NAME=ens37

DEVICE=ens37

ONBOOT=yes

IPADDR=192.168.10.107

NETMASK=255.255.255.0

GATEWAY=192.168.10.1

 

 

[root@linux-node6 network-scripts]# systemctl restart network

[root@linux-node6 network-scripts]# ifconfig ens37

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.10.107  netmask 255.255.255.0  broadcast 192.168.10.255

        inet6 fd05:fa56:9fbc::2eb  prefixlen 128  scopeid 0x0<global>

        inet6 fd05:fa56:9fbc:0:20c:29ff:fe7a:f784  prefixlen 64  scopeid 0x0<global>

        inet6 fe80::20c:29ff:fe7a:f784  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:7a:f7:84  txqueuelen 1000  (Ethernet)

        RX packets 86  bytes 8468 (8.2 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 91  bytes 8234 (8.0 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

 

 

 

 

2、添加虚拟主机配置:

 

[root@linux-node6 ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf

<Directory "/usr/local/httpd/htdocs">

    Order allow,deny

    Allow from all

</Directory>

 

<VirtualHost 192.168.10.106>

    DocumentRoot "/usr/local/httpd/htdocs/aaa"

    ServerName aaa.server.com

    ErrorLog "logs/aaa.server.com-error_log"

    CustomLog "logs/aaa.server.com-access_log" common

</VirtualHost>

 

<VirtualHost 192.168.10.107>

    DocumentRoot "/usr/local/httpd/htdocs/bbb"

    ServerName bbb.server.com

    ErrorLog "logs/bbb.server.com-error_log"

    CustomLog "logs/bbb.server.com-access_log" common

</VirtualHost>

 

[root@linux-node6 ~]# vi /usr/local/httpd/conf/httpd.conf

Include conf/extra/httpd-vhosts.conf    //记得去掉#号,加载此Include

 

 

[root@linux-node6 ~]# /usr/local/httpd/bin/apachectl -k restart

 

 

3、测试:

 

 

 

 

 

 

 

 

四、基于端口的虚拟机配置方法:

 

1、修改虚拟主机的端口配置:

 

[root@linux-node6 ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf

<Directory "/usr/local/httpd/htdocs">

    Order allow,deny

    Allow from all

</Directory>

 

<VirtualHost 192.168.10.106:80>

    DocumentRoot "/usr/local/httpd/htdocs/aaa"

    ServerName aaa.server.com

    ErrorLog "logs/aaa.server.com-error_log"

    CustomLog "logs/aaa.server.com-access_log" common

</VirtualHost>

 

<VirtualHost 192.168.10.106:888>

    DocumentRoot "/usr/local/httpd/htdocs/aaa"

    ServerName aaa.server.com

    ErrorLog "logs/aaa.server.com-error_log"

    CustomLog "logs/aaa.server.com-access_log" common

</VirtualHost>

 

 

 

[root@linux-node6 ~]# vi /usr/local/httpd/conf/httpd.conf

Include conf/extra/httpd-vhosts.conf    //记得去掉#号,加载此Include

Listen 80

Listen 888

 

[root@linux-node6 ~]# /usr/local/httpd/bin/apachectl -k restart

[root@linux-node6 ~]# netstat -tunlp | grep httpd

tcp6       0      0 :::80                   :::*                    LISTEN      3117/httpd          

tcp6       0      0 :::888                  :::*                    LISTEN      3117/httpd

 

 

 

测试:

 

虚拟主机配置完啦!下面我们继续学习其它web东东,是不是很简单容易掌握。

猜你喜欢

转载自blog.csdn.net/weixin_41515615/article/details/81840906