简介

虚拟主机是指在网络服务器上分出一定的磁盘空间,管理员可以利用此部分空间,放置站点及应用组件,提供必要的数据存放和传输功能。虚拟主机,就是把一台运行在互联网上的物理服务器划分成多个“虚拟”服务器。

优点

价格低廉。相对于购买独立服务器,网站建设的费用大大降低,为普及中小型网站提供了极大便利。
提升效率。由于多台虚拟主机共享一台真实主机的资源,大大增加了服务器和带宽的利用率,使得一台服务器上能够毫无冲突地配置多个网络IP地址。

缺点

功能限制。比如可能耗用系统资源的论坛程序、流量统计功能等。
访问速度及流量限制。一台服务器上的不同虚拟主机是各自独立的,并由管理员管理。但一台服务器主机只能够支持一定数量的虚拟主机,当超过这个数量时,服务器性能急剧下降。
自主性差。虚拟主机不能由客户随意的安装软件及远程桌面等操作。

用途

适合作为中小企业的小型门户网站,节省资金资源。
中小企业、专业门户网站可以使用虚拟主机空间提供数据共享、数据下载服务。
可以为中小企业提供数据存储数据功能。由于成本比独立服务器低,安全性高做为小型数据库首选。
虚拟主机空间特有的应用程序模板,使用者可以快速的进行批量部署,是中小型企业运行ASP或PHP应用的首选平台。

实验环境

  • 系统环境:centos6.5
  • 服务器IP地址:192.168.100.103
  • 客户端IP地址:192.168.100.99
  • yum挂载目录:/mnt/sr0
  • 相关源码包下载地址:百度云下载  密码:pko3

搭建步骤

一、准备工作

1、关闭防火墙及selinux

[root@localhost ~]# chkconfig iptables off #随开机关闭iptables
[root@localhost ~]# vim /etc/sysconfig/selinux
Apache搭建虚拟主机(基于IP、端口、域名实现)内附源码包
[root@localhost ~]# reboot #重启Linux生效

二、搭建DNS服务器

1、安装bind软件包

[root@localhost ~]# cd /mnt/sr0/Packages/
[root@localhost Packages]# rpm -ivh bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm

2、修改主配置文件named.conf

[root@localhost ~]# vim /etc/named.conf
Apache搭建虚拟主机(基于IP、端口、域名实现)内附源码包

3、创建并修改DNS正向解析文件

[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost bt.com.zone #将模板文件改为正向解析文件进行修改
[root@localhost ~]# vim /var/named/bt.com.zone #修改正向解析文件
Apache搭建虚拟主机(基于IP、端口、域名实现)内附源码包

[root@localhost named]# cp -p bt.com.zone cloud.com.zone #搭建cloud域
[root@localhost ~]# vim /var/named/bt.com.zone
Apache搭建虚拟主机(基于IP、端口、域名实现)内附源码包

4、启动DNS服务器

[root@localhost ~]# /etc/init.d/named start

5、修改DNS客户机配置文件

[root@localhost ~]# echo "nameserver 192.168.100.103" >> /etc/resolv.conf

6、测试DNS解析

[root@localhost ~]# nslookup www.bt.com #nslookup 用于查询DNS的记录,查看域名解析是否正常
[root@localhost ~]# nslookup www.cloud.com
Apache搭建虚拟主机(基于IP、端口、域名实现)内附源码包

三、安装Apache

1、安装gcc、gcc-c++、make、arp、arp-util、pcre等工具包

[root@localhost ~]# yum -y install gcc gcc-c++ make #安装C语言编译器以及make

[root@localhost ~]# tar -zxvf apr-1.4.6.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/apr-1.4.6/
[root@localhost apr-1.4.6]# ./configure prefix=/usr/local/apr && make && make install

[root@localhost ~]# tar -zxvf apr-util-1.4.1.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/apr-util-1.4.1/
[root@localhost apr-util-1.4.1]# ./configure prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install

[root@localhost ~]# tar -zxvf pcre-8.10.tar.gz -C /usr/src #支持正则
[root@localhost ~]# cd /usr/src/pcre-8.10/
[root@localhost pcre-8.10]# ./configure prefix=/usr/local/pcre && make && make instal

2、配置编译安装apache

[root@localhost ~]# tar xvfz httpd-2.4.2.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/httpd-2.4.2/
[root@localhost httpd-2.4.2]# ./configure \
--prefix=/usr/local/httpd \
--with-apr=/usr/local/apr \
--with-pcre=/usr/local/pcre \
--enable-so \
--enable-rewrite \
--enable-mods-shared=most \
--with-mpm=worker \
--disable-cgid \
--disable-cgi

参数解析:
prefix:指定安装目录
with-apr:apr的安装目录
with-pcre:使用扩展的pcre正则表达式库
enable-so:启用动态加载模块支持,需要什么功能可以动态加载
enable-rewrite:启用网页地址重写功能,实现伪静态
enable-mods-shared:启用的共享DSO模块
with-mpm:选择apache所使用的处理模块
disable-cgid:禁用CGID
disable-cgi:启用CGI脚本程序支持(通用网关接口)

[root@localhost httpd-2.4.2]# make && make install

3、添加系统服务

[root@localhost ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

[root@localhost ~]# vim /etc/init.d/httpd

第2、3两行添加以下参数
# chkconfig:2345 85 15
# description:Apache is a World Wide Web server.

[root@localhost init.d]# chmod +x /etc/init.d/httpd
[root@localhost init.d]# chkconfig --add httpd

4、建立软链接,方便管理

[root@localhost ~]# mkdir -p /etc/httpd
[root@localhost ~]# ln -s /usr/local/httpd/conf/ /etc/httpd/ #优化配置文件路径
[root@localhost ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ #优化命令路径

5、修改配置文件

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

#修改以下参数:
ServerName www.bt.com:80 #填写完全主机名
Listen 192.168.100.103:80 #监听本地IP

6、重启服务、测试

[root@localhost ~]# service httpd start
Apache搭建虚拟主机(基于IP、端口、域名实现)内附源码包

四、基于域名的虚拟主机(相同IP,相同端口,不同主机名)

1、创建虚拟Web主机网站目录以及网页

[root@localhost ~]# mkdir -p /var/www/html/{btcom,cloudcom}#创建网站目录
[root@localhost ~]# echo "this is bt.com AAAAAAAAAA" > /var/www/html/btcom/index.html #创建网页
[root@localhost ~]# echo "this is cloud.com BBBBBBBBBB" > /var/www/html/cloudcom/index.html #创建网页

2、修改配置文件,添加虚拟主机配置

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf #修改主配置文件

修改、打开以下参数:

打开此行注释,涵盖了虚拟主机的配置,并且可以看出在conf目录下有虚拟主机配置文件

Include conf/extra/httpd-vhosts.conf

设置根目录区域

<Directory /> #定义"/"目录区域
Options FollowSymLinks #控制选项,允许使用符号连接
AllowOverride None #不允许隐含
Order deny,allow #以下两行允许所有人访问
Allow from all
</Directory>

[root@localhost ~]# vim /etc/httpd/conf/extra/httpd-vhosts.conf #编辑虚拟主机配置

修改并添加以下参数:

<Directory "/var/www/html"> #定义网站目录允许所有人访问
order allow,deny
Allow from all
</Directory>

主机1设置:

<VirtualHost 192.168.100.103>
ServerAdmin hello@qq.com #设置管理员邮箱地址
DocumentRoot "/var/www/html/btcom" #设置站点目录
ServerName www.bt.com #完全主机名
ServerAlias www.bt.com #完全主机名别名
ErrorLog "logs/www.bt.com-error_log" #错误日志存放位置
CustomLog "logs/www.bt.com-access_log" common #访问日志存放位置
</VirtualHost>

主机2设置:

<VirtualHost 192.168.100.103>
ServerAdmin hello@qq.com
DocumentRoot "/var/www/html/cloudcom"
ServerName www.cloud.com
ServerAlias www.cloud.com
ErrorLog "logs/www.cloudcom.com-error_log"
CustomLog "logs/www.cloudcom.com-access_log" common
</VirtualHost>

3、客户机测试

[root@Init5 ~]# echo "nameserver 192.168.100.103" >> /etc/resolv.conf #修改DNS客户机配置文件

Apache搭建虚拟主机(基于IP、端口、域名实现)内附源码包

五、基于IP地址的虚拟主机(相同端口,相同主机名,不同IP)

1、服务器端添加一块网卡eth1

Apache搭建虚拟主机(基于IP、端口、域名实现)内附源码包

2、修改主配置文件

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

#添加、修改以下两行参数:
Listen 192.168.100.103:80
Listen 192.168.100.104:80

3、修改虚拟主机配置文件

[root@localhost ~]# vim /etc/httpd/conf/extra/httpd-vhosts.conf

<Directory "/var/www/html">
order allow,deny
Allow from all
</Directory>

主机1设置:

<VirtualHost 192.168.100.103>
ServerAdmin hello@qq.com
DocumentRoot "/var/www/html/btcom"
ServerName www.bt.com
ServerAlias www.bt.com
ErrorLog "logs/www.bt.com-error_log"
CustomLog "logs/www.bt.com-access_log" common
</VirtualHost>

主机2设置:

<VirtualHost 192.168.100.104>
ServerAdmin hello@qq.com
DocumentRoot "/var/www/html/cloudcom"
ServerName www.bt.com
ServerAlias www.bt.com
ErrorLog "logs/www.cloudcom.com-error_log"
CustomLog "logs/www.cloudcom.com-access_log" common
</VirtualHost>

4、重启httpd服务

[root@localhost ~]# /etc/init.d/httpd restart
Apache搭建虚拟主机(基于IP、端口、域名实现)内附源码包

六、基于端口的虚拟主机(相同端口,相同主机名,不同IP)

1、修改虚拟主机配置文件

[root@localhost ~]# vim /etc/httpd/conf/extra/httpd-vhosts.conf

<Directory "/var/www/html">
order allow,deny
Allow from all
</Directory>

主机1设置:

<VirtualHost 192.168.100.103:80>
ServerAdmin hello@qq.com
DocumentRoot "/var/www/html/btcom"
ServerName www.bt.com
ServerAlias www.bt.com
ErrorLog "logs/www.bt.com-error_log"
CustomLog "logs/www.bt.com-access_log" common
</VirtualHost>

主机2设置:

<VirtualHost 192.168.100.103:8080>
ServerAdmin hello@qq.com
DocumentRoot "/var/www/html/cloudcom"
ServerName www.cloud.com
ServerAlias www.cloud.com
ErrorLog "logs/www.cloudcom.com-error_log"
CustomLog "logs/www.cloudcom.com-access_log" common
</VirtualHost>

2、修改主配置文件

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

#以下两行要有,并且我将IPv6的监听注释掉
Listen 192.168.100.103:80
Listen 192.168.100.103:8080

3、重启httpd服务

[root@localhost ~]# /etc/init.d/httpd restart

4、客户机测试

Apache搭建虚拟主机(基于IP、端口、域名实现)内附源码包