虚拟Web 主机指的是在同一台服务器中运行多个Web 站点,其中的每一个站点实际上并不
独立占用整个服务器,因此被称为‘虚拟”Web 主机。通过虚拟Web 主机服务可以充分利用服务
器的硬件资源,从而大大降低网站构建及运行成本。
使用httpd 可以非常方便地构建虚拟主机服务器,只需要运行一个httpd 服务就能够同时支撑
大量的Web站点。httpd支持的虚拟主机类型包括以下三种。
基于域名: 为每个虚拟主机使用不同的域名,但是其对应的IP 地址是相同的。例如,
www.benet.com和www.accp com站点的地址都是173.17 17.11.这是使用最为普
遍的虚拟Web 主机类型。
基于IP地址:为每个虚拟主机使用不同的域名,且各自对应的P地址也不相同。这种方
式需要为服务器配备多个网络接口,因此应用并不是非常广泛。
基于端口:这种方式并不使用域名、IP 地址来区分不同的站点内容,而是使用了不同的
TCP 端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。
在上述几种虚拟Web主机中,基于域名的虚拟主机是使用最为广泛的。也是本节介绍的重点
内容,关于另外两种类型的虚拟主机,将只介绍其配置要点。另外,因不同类型的虚拟主机建
分机制各不相同,建议不要同时使用,以免相互混淆。
实验环境:一台装有red hat 7的主机或者red hat 6的系统,已经搭建好Apache网站,YUM仓库
一
1.我们先配置DNS服务器,用来解析域名。(这里就不用源码包安装了,也不做过多的介绍,下一个博客写DNS服务器,使用yum进行安装)
[[email protected] ~]# yum install -y bind bind-utils
2.修改全局配置文件
[[email protected] ~]# vim /etc/named.conf
options {
listen-on port 53 { any; };
allow-query { any; };
}
3.修改区域配置文件
[[email protected] ~]# vim /etc/named.rfc1912.zones
添加以下内容
zone "benet.com" IN {
type master;
file "benet.com.zone";
allow-update { none; };
};
zone "accp.com" IN {
type master;
file "accp.com.zone";
allow-update { none; };
};
4.修改区域数据配置文件
[[email protected] ~]# cd /var/named/
[[email protected] named]# cp -p named.localhost benet.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
PTR localhost.
www IN A 192.168.100.70
~
5.将benet的配置文件拷贝成accp
[[email protected] named]# cp -p benet.com.zone accp.com.zone
6.将本机的地址写入库文件中
[[email protected] named]# echo "namedserver 192.168.100.70" >/etc/resolv.conf
7.启动DNS服务
[[email protected] named]# service named start
二
1.准备虚拟机文档
[[email protected] ~]# mkdir -p /var/www/html/benet
[[email protected] ~]# mkdir -p /var/www/html/accp
2.写一个网页导入到目录中
echo "<h1>www.benet.com</h1>" >/var/www/html/benet/index.html
echo "<h1>www.accp.com</h1>" >/var/www/html/accp/index.html
3.创建一个目录写虚拟机的配置文件
[[email protected] ~]# mkdir /usr/local/apache/conf.d
4.在目录中创建一个虚拟主机的文档,一个虚拟路径的文档
[[email protected] conf.d]# vim vdir.conf
Alias /test/ "/var/www/html/benet"
<Directory "/opt/benet">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
Alias /test1/ "/opt/accp"
<Directory "/var/www/html/accp">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
Order 配置项可以设置为“allow.deny" 或"deny,allow
以决定主机应用“允许”和“拒绝”
策略的先后顺序。
allow.deny: 先“允许”后“拒绝”,默认拒绝所有未明确允许的客户机地址,
deny,allow: 先“拒绝”后
允许,默认允许所有未明确拒绝的客户机地址。
(以上没解释的请参考上一个博文)
[[email protected] conf.d]# vim vhost.conf
(基于域名的虚拟主机,需要在本机或者linux上添加hosts指向)
windows如下
C:\Windows\System32\drivers\etc(默认路径)
192.168.100.70 www.accp.com
192.168.100.70 www.benet.com
<VirtualHost 192.168.100.70:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/accp
ServerName www.accp.com
ErrorLog logs/bjxh.com-error_log
CustomLog logs/bjxh.com-access_log common
</VirtualHost>
<Directory "/var/www/html/accp">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
<VirtualHost 192.168.100.70:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/benet
ServerName www.benet.com
ErrorLog logs/bjxh.com-error_log
CustomLog logs/bjxh.com-access_log common
</VirtualHost>
<Directory "/opt/benet/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
<VirtualHost 192.168.100.70:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/accp
ServerName www.accp.com
ErrorLog logs/bjxh.com-error_log
CustomLog logs/bjxh.com-access_log common
</VirtualHost>
监听地址: 使用NameVirtualHost 配置项指定提供虚拟主机服务的IP 地址,也就是进行域
名查询时各虚拟Web主机的IP地址,如173.17.17.11。
虚拟主机区域: 使用<VirtualHost 监听地址>....<"/VirtualHost>区域配置,为每一个虚拟
Web 主机建立独立的配置内容。其中至少应包括虚拟主机的网站名称、网页根目录的配
其他(如管理邮箱、访问日志等) 配置项可根据实际需要添加。
目录权限,使用<Directory 目录位置....Dpcdo>区域配置,为每一个虚拟Web
主机的网站目录设置访问权限,如允许任何人访问。目录访问可以继承其父目录的授权
许可,因此可以采取直接为父文件夹授权访问权限的方法来简化配置。
5.配置基于端口的虚拟主机
Listen 8080
<VirtualHost 192.168.100.70:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/benet
ServerName www.benet.com
ErrorLog logs/benet.com-error_log
CustomLog logs/benet.com-access_log common
</VirtualHost>
<Directory "/var/www/html/benet">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
<VirtualHost 192.168.100.70:8080>
ServerAdmin [email protected]
DocumentRoot /var/www/html/accp
ServerName www.accp.com
ErrorLog logs/accp.com-error_log
CustomLog logs/accp.com-access_log common
</VirtualHost>
<Directory "/var/www/html/accp">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
6.配置基于IP地址的主机(需要添加一块网卡配置IP地址等信息,并启用)
需要在本机或者linux上添加hosts指向
windows如下
C:\Windows\System32\drivers\etc(默认路径)
192.168.100.70 www.accp.com
192.168.90.70 www.benet.com
<VirtualHost 192.168.100.70:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/accp
ServerName www.accp.com
ErrorLog logs/accp.com-error_log
CustomLog logs/accp.com-access_log common
</VirtualHost>
<Directory "/var/www/html/accp">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
<VirtualHost 192.168.90.70:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/benet
ServerName www.benet.com
ErrorLog logs/benet.com-error_log
CustomLog logs/benet.com-access_log common
</VirtualHost>
<Directory "/var/www/html/benet">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
三
- 修改完成之后再httpd的配置中添加虚拟主机的路径
[[email protected] ~]# vim /usr/local/apache/conf/httpd.conf
Include conf.d/*.conf
2.修改httpd的配置文件给网页路径权限
<Directory "/var/www/html/">
AllowOverride None
Options None
Require all granted
</Directory>
3.重启服务后就可以访问了
[[email protected] ~]# service httpd restart
注:本篇文章注意细节
本篇文章可能让大家等太久了(这几天实在太忙),小编在此向大家道歉!
red hat 6&red hat 7 Apache网站搭建(二)虚拟主机