在同一台Apache服务器中运行多个web站点,其中的每一个站点实际上不会占用着整个服务器,通过虚拟web主机服务可以充分利用服务器的硬件资源,从而降低网站构建以及运行成本。虚拟主机主要类型分为三种:
1、基于IP端口
对每个不同域名的虚拟主机设置单独IP,因此,在服务器中需要设置多个网卡,对于硬件成本和IP成本要求都高,此种方式在实际中不常用,本文暂且略过;
2、基于端口IP
使用TCP不同端口来区分不同的站点内容,需要在用户访问站点时跟上指定端口号才可实现访问;
3、基于主机名
每个服务器主机可以构建多个不同域名服务器,但都使用相同IP地址;此种方式在实际中较为常用!
当网页分类内容较多,对于后台运维数据处理与更新压力较大,因此需要建立分类管理的目录,方便管理,称为虚拟目录;
实验描述:
- 实验环境Redhat6.5版本
- 服务器IP地址:192.168.100.107
- Redhat镜像挂载至/mnt下
- 本实验使用Apache2.2版本
rpm -q httpd //查看Apache版本
环境部署
rpm -q httpd //检查是否安装Apache
service iptables stop //关闭防火墙
setenforce 0 //关闭增强安全×××
建立Apache虚拟目录(用户访问控制)
1、虚拟目录访问
rpm -ivh /mnt/Packages/httpd-2.2.15-29.el6_4.x86_64.rpm // 安装Apache2.2
vim /etc/httpd/conf/httpd.conf //编辑主配置文件
Listen 192.168.100.107:80 //更改监听地址和监听端口
#Listen 80 //注释IPV6的监听
...
ServerName www.yun.com:80 //打开主机域名
vim /etc/httpd/conf.d/vdir.conf
//在子配置文件目录下创建虚拟目录配置文件 vdir.conf
在vdir.conf中写入以下内容:
Alias /test "/opt/test/" //指定虚拟目录名称为test,并指定目录站点在/opt/test
<Directory "/opt/test/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
AuthName "hello" //认证名称
authtype basic //用户认证方式为基本认证方式
authuserfile /etc/httpd/user //指定用户认证文件存放位置
#authgroupfile /etc/httpd/group
#require Valid-user //设置用户访问权限,取消注释时即可实现用户授权访问;
#require user test
#Require group admin
</Directory>
mkdir -p /opt/test //创建虚拟目录站点
vim /opt/test/index.html //创建虚拟目录首页
service httpd start //开启httpd服务
2、用户授权访问
vim /etc/httpd/conf.d/vdir.conf //编辑服务子配置文件
Alias /test "/opt/test/" //指定虚拟目录名称为test,并指定目录站点在/opt/test
<Directory "/opt/test/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
AuthName "hello" //认证名称
authtype basic //用户认证方式为基本认证方式
authuserfile /etc/httpd/user //指定用户认证文件存放位置
#authgroupfile /etc/httpd/group
#require Valid-user //取消注时即可实现用户授权访问;
#require user test
#Require group admin
</Directory>
htpasswd -c /etc/httpd/user zhangsan //创建授权访问用户
service httpd restart //重启httpd服务
当再一次访问网页时变成了需要授权的用户才可访问:
相同IP不同端口
1、配置DNS
可参见:DNS域名解析服务配置
rpm -ivh /mnt/Packages/bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm //首先安装DNS域名解析服务
vim /etc/named.conf //配置域名解析主配置文件
options {
listen-on port 53 { 192.168.100.107; }; //监听端口主机IP
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";
allow-query { any; }; //允许任意网段主机都可解析
recursion yes;
vim /etc/named.rfc1912.zones //编辑区域配置文件
zone "yun.com" IN {
type master;
file "yun.com.zone";
allow-update { none; };
};
cd /var/named //切换到区域数据配置目录下
cp -p named.localhost yun.com.zone //复制区域数据配置文件模板
vim yun.com.zone //配置区域数据配置文件
$TTL 1D
@ IN SOA @ admin. ( //修改管理员邮箱
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
www IN A 192.168.100.107 //设置解析地址
service named start //开启DNS服务
2、不同端口不同内容
vim /etc/httpd/vhost.conf //创建虚拟主机端口配置文件
写入以下内容:
NameVirtualHost 192.168.100.107:80 //设置主机IP及端口号
<VirtualHost 192.168.100.107:80>
ServerAdmin [email protected]
DocumentRoot /opt/yun/ //设置80端口网页站点
ServerName www.yun.com //解析域名
ErrorLog logs/yun.com-error_log //错误日志存放位置
CustomLog logs/yun.com-access_log common //访问日志存放位置
</VirtualHost>
NameVirtualHost 192.168.100.107:250
<VirtualHost 192.168.100.107:250>
ServerAdmin [email protected]
DocumentRoot /opt/yun01/ //设置80端口网页站点
ServerName www.yun.com //解析域名
ErrorLog logs/yun01.com-error_log //错误日志存放位置
CustomLog logs/yun01.com-access_log common //访问日志存放位置
</VirtualHost>
mkdir -p /opt/yun //创建80端口站点
echo "yun port 80 test web" > /opt/yun/index.html // 创建 www.yun.com:80的首页内容mkdir -p /opt/yun01 //创建250端口站点
echo "yun port 250 test web" > /opt/yun01/index.html // 创建 www.yun.com:250的首页内容vim /etc/httpd/conf/httpd.conf //编辑httpd服务主配置文件
Listen 192.168.100.107:80 //原有监听端口
Listen 192.168.100.107:250 //添加监听端口
service httpd restart //重启httpd服务
service named restart //重启DNS服务
当访问相同IP域名不同端口时出现不同内容:
相同IP不同主机
1、配置DNS解析服务
vim /etc/named.rfc1912.zones //编辑区域配置文件
zone "yun.com" IN {
type master;
file "yun.com.zone";
allow-update { none; };
};
zone "abc.com" IN { //添加新的解析域名
type master;
file "abc.com.zone";
allow-update { none; };
};
cd /var/named
cp -p yun.com.zone abc.com.zone //复制区域数据配置文件模板
vim abc.com.zone
$TTL 1D
@ IN SOA @ admin. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
www IN A 192.168.100.107
2、不同主机
vim /etc/httpd/conf.d/vhost.conf
加入以下内容:
<VirtualHost 192.168.100.107:80>
ServerAdmin [email protected]
DocumentRoot /opt/abc/
ServerName www.abc.com
ErrorLog logs/abc.com-error_log
CustomLog logs/abc.com-access_log common
</VirtualHost>
mkdir -p /opt/abc //创建 www.abc.com的站点
echo "this is abc" > /opt/abc/index.html //创建内容service httpd restart //重启httpd服务
service named restart //重启DNS服务
原文地址:http://blog.51cto.com/13659253/2125742