Apache的主要特点:
- 开放源代码
- 跨平台应用
- 支持各种Web编程语言
- 模块化设计
- 运行非常稳定
- 良好的安全性
在同一台Apache服务器中运行多个web站点,其中的每一个站点实际上不会占用着整个服务器,通过虚拟web主机服务可以充分利用服务器的硬件资源,从而降低网站构建以及运行成本。虚拟主机主要类型分为三种:
- 基于IP端口
对每个不用域名的虚拟主机设置单独IP,因此,在服务器中需要设置多个网卡,对于硬件成本和IP成本要求都高,此种方式在实际中不常用,本文暂且略过。 - 基于端口IP
使用TCP不用端口来区分不用的站点内容,需要在用户访问站点时跟上指定端口号才可实现访问。 - 基于主机名
每个服务器主机可以构建多个不用域名服务器,但都使用相同IP地址;此种方式在实际中较为常用。
实验环境:
- RHEL6.5操作系统
- 服务器IP地址:192.168.100.110
- RHEL镜像光盘挂载至/mnt目录下
环境部署
1.检查并安装httpd服务器
rpm -q httpd ??????????????//检查httpd服务器是否已安装httpd-2.2.15-29.el6_4.x86_64 ??????????????????//已安装httpd服务器
2.关闭防火墙和增强安全功能
service iptables stopsetenforce 0
建立Apache虚拟目录(用户访问控制)
vim /etc/httpd/conf/httpd.conf ??????????//编辑httpd配置文件
Listen 192.168.100.110:80 ????????//更改监听地址和监听端口 ???????
#Listen 80 ???????????//注释IPV6的监听 ???????
ServerName www.yun.com:80 ????//设置主机名
vim /etc/httpd/conf.d/vdir.conf //在子配置目录下创建虚拟目录配置文件vdir.conf
//以下为写入vdir.conf中的内容 ????
Alias /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 ?????????//创建虚拟目录站点 ?????echo “this is vdir test” > /opt/test/index.html ????//新建站点首页 ?service httpd start ????//开启httpd服务
用户授权访问:
vim /etc/httpd/conf.d/vdir.conf ????//编辑服务子配置文件
<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 ???????????//创建授权访问用户zhangsanservice httpd restart ??????????????//重启httpd服务
再次访问网页时会跳出账号密码验证登录窗口:
相同IP不同端口情况下:
1. 在/etc/httpd/conf.d目录下新建vport.conf(虚拟目录文件)
cd /etc/httpd/conf.d/vim vport.conf ?????????????????//新建vport.conf配置文件
写入以下内容:
NameVirtualHost 192.168.100.110:80 ???????//虚拟主机IP地址及端口号 ???
<VirtualHost 192.168.100.110:80> ?
ServerAdmin webmaster@dummy-host.example.com ??//管理员邮箱 ???
DocumentRoot /opt/yun/ ????//网页站点目录 ?
ServerName www.yun.com ????//域名 ?
ErrorLog logs/benet.com-error_log ?????//错误日志 ?
CustomLog logs/benet.com-access_log common ????//访问日志 ?
</VirtualHost> ???
NameVirtualHost 192.168.100.110:81 ???????//虚拟主机IP地址及端口号 ???
<VirtualHost 192.168.100.110:81> ?
ServerAdmin webmaster@dummy-host.example.com ??//管理员邮箱 ???
DocumentRoot /opt/yun01/ ??????//网页站点目录 ?
ServerName www.yun.com ????//域名 ?
ErrorLog logs/benet.com-error_log ?????//错误日志 ?
CustomLog logs/benet.com-access_log common ????//访问日志 ?
</VirtualHost>
2. 创建yun、yun01的站点目录,新建各站点首页文件
mkdir /opt/yun /opt/yun01 ??????//创建站点目录echo ”yun port 80 test” > /opt/yun/index.html ??//添加yun站点的首页内容echo ”yun01 port 81 test” > /opt/yun01/index.html ?//添加yun01站点的首页内容
3. 修改httpd.conf配置文件
vim /etc/httpd/conf/httpd.confListen 192.168.100.110:81 ??????????//添加81端口的监听地址
4. 重启httpd服务
service httpd restart
5. 测试
相同IP不同主机情况下:
1. 在/etc/httpd/conf.d目录下新建vhost.conf
cd /etc/httpd/conf.d/vim vhost.conf ?????????//新建vhost.conf配置文件
写入以下内容:
NameVirtualHost 192.168.100.110:80 //虚拟主机名称 ????
<VirtualHost 192.168.100.110:80> ???????????????????
ServerAdmin admin@benet.com //管理员邮箱 ?
DocumentRoot /opt/benet/ //网站站点目录 ??
ServerName www.benet.com //域名 ??
ErrorLog logs/benet.com-error_log //错误日志 ?
CustomLog logs/benet.com-access_log common //访问日志 ????
</VirtualHost>
mkdir /opt/benet ???????????//创建www.benet.com的站点echo “this is benet” > /opt/benet/index.html ???????//创建首页及添加内容
2. 安装DNS服务器
安装bind软件包:
rpm –ivh /mnt/Packages/bind-9.8.2-0.17.rc1.el6_x86_64.rpm
编辑主配置文件
vim /etc/named.conf
options { ????
listen-on port 53 { 192.168.100.110; }; ??????
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; }; ??
}; ???zone "benet.com" IN { ????
type master; ?
file "benet.com.zone"; ???
allow-update { none; }; ??
}; ???
在/var/named目录下复制模板文件
cd /var/namedcp –p named.localhost yun.com.zone
编辑区域数据配置文件
vim yun.com.zone
cp –p yun.com.zone benet.com.zone ????//yun和benet区域数据配置文件相同,可直接复制
3.启动(重启)named及httpd服务:
service httpd restartservice named start
4.测试
Apache构建虚拟Web主机
原文地址:http://blog.51cto.com/13625810/2126218