创建基于web站点的虚拟主机是一个复杂但非常有价值的过程,它使得在同一台服务器上运行多个Web站点成为可能,这不仅充分利用了服务器的硬件资源,还显著降低了网站构建及运行成本,本文将详细介绍如何创建基于域名的虚拟主机,包括提供域名解析、准备网页文档、更改配置文件和客户机访问验证等步骤。
一、虚拟Web主机
虚拟Web主机是指在同一台服务器中运行多个Web站点,其中每个站点并不独立占用整个服务器,因此被称为“虚拟”Web主机,通过虚拟Web主机服务,可以极大地提高服务器的资源利用率,降低网站构建及运行成本,Apache是最常用的Web服务器软件之一,支持多种类型的虚拟主机配置,包括基于域名、基于IP地址和基于端口的虚拟主机。
二、创建基于域名的虚拟主机
1. 提供域名解析
首先需要向DNS服务提供商注册各虚拟Web站点的域名,以便当访问其中任何一个虚拟Web站点时,最终访问的都是同一个IP地址——实际支撑所有虚拟Web站点的服务器的IP地址,假设我们有两个域名www.wlm.com和www.wat.com,对应的IP地址为20.0.0.58,我们可以将两个域名作为Apache服务的两个虚拟的web站点同时对应一个IP地址20.0.0.58。
2. 准备网页文档
为每个虚拟Web主机准备网站目录及网页文档,分别为每个虚拟Web主机提供包含不同内容的首页文件。
- [root@localhost ~]# mkdir -p /var/www/html/wlmcom
- [root@localhost ~]# mkdir -p /var/www/html/watcom
- [root@localhost opt]# echo "<h1>www.wlm web1</h1>" > /var/www/html/wlm/index.html
- [root@localhost opt]# echo "<h1>www.wat web2</h1>" > /var/www/html/wat/index.html
3. 更改配置文件
在Apache服务的主配置文件中,若要启用基于域名的虚拟Web主机,通常需要更改以下两个区域:
虚拟主机区域配置:使用<VirtualHost>
监听地址……区域配置,为每一个虚拟Web主机建立独立的配置内容,其中至少应包括虚拟主机的网站名称、网页根目录的配置项;其他(如管理邮箱、访问日志等)配置项可根据实际需要添加。
访问网页根目录的权限配置:使用<Directory>
目录位置……区域配置,为每一个虚拟Web主机的网站目录设置访问权限,如允许任何人访问,目录访问可以继承其父目录的授权许可,因此可以采取直接为父文件夹授权访问权限的方法来简化配置。
当虚拟Web主机的数量较多时,建议使用独立的虚拟主机配置文件。
- <VirtualHost *:80> //设置域名 www.wlm.com 虚拟站点区域
- DocumentRoot "/var/www/html/wlm" //服务访问域名网页的路径
- ServerName www.wlm.com //服务访问的域名
- ErrorLog "logs/www.wlm.com.error_log" //错误访问日志存放路径
- CustomLog "logs/www.wel.com.access_log" common //访问日志存放路径
- <Directory "/var/www/html"> //设置目录访问权限
- Require all granted //允许所有访问
- </Directory>
- </VirtualHost>
- <VirtualHost *:80> //设置域名 www.wat.com 虚拟站点区域。
- DocumentRoot "/var/www/html/wat" //服务访问域名网页的路径
- ServerName www.wat.com //服务访问的域名
- ErrorLog "logs/www.wat.com.error_log" //错误访问日志存放路径
- CustomLog "logs/www.wat.com.access_log" common //访问日志存放路径
- <Directory "/var/www/html"> //设置目录访问权限
- Require all granted //允许所有访问
- </Directory>
- </VirtualHost>
然后在httpd.conf文件中通过开启“Include conf/extra/httpd-vhosts.conf”加载这些配置,这样可以将对httpd.conf文件的改动减至最少,更方便配置内容的维护。
4. 客户机访问验证
在客户机的hosts文件中加入DNS域名的映射,再在客户机的浏览器中,使用网站名称分别访问不同的域名,能够看到之前设定的网页内容,此时表示基于域名的虚拟主机配置成功,若无法看到此结果,则需要检查两个站点的首页文件,根据上述过程排查配置错误,必要时清空浏览器缓存后重新访问,Linux的hosts文件路径为:/etc/hosts。
- 20、0.0.58 www.wlm.com //添加内容
- 20、0.0.58 www.wat.com
三、FAQs
Q1: 如何在Apache中配置基于IP地址的虚拟主机?
A1: 要配置基于IP地址的虚拟主机,需要在Apache配置文件中为每个虚拟主机指定不同的IP地址。
- <VirtualHost 192.168.1.10:80> //配置监听地址为 192.168.1.10
- ServerAdmin webmaster@test.com
- DocumentRoot "/var/www/html/test1com"
- ServerName www.test1.com
- ServerAlias www.dummy-host.example.com
- ErrorLog "logs/www.test1.com-error_log"
- CustomLog "logs/www.test1.com-access_log" common
- <Directory "/var/www/html">
- Require all granted
- </Directory>
- </VirtualHost>
然后重启Apache服务使配置生效。
Q2: 如何在Apache中配置基于端口的虚拟主机?
A2: 要在Apache中配置基于端口的虚拟主机,需要在配置文件中指定不同的TCP端口号。
- Listen 80
- <VirtualHost *:80> //配置监听地址和端口 “*” 代表任意地址
- ServerAdmin webmaster@test.com //管理员邮箱地址
- DocumentRoot "/var/www/html/test1com" //指定网站根目录
- ServerName www.test1.com //域名
- ServerAlias www.dummy-host.example.com //别名
- ErrorLog "logs/www.test1.com-error_log" //错误日志
- CustomLog "logs/www.test1.com-access_log" common //访问日志
- <Directory "/var/www/html"> //设置目录访问权限
- Require all granted //允许所有
- </Directory>
- </VirtualHost>
- Listen 8080
- <VirtualHost *:8080> //配置监听地址和端口 “*” 代表任意地址
- ServerAdmin webmaster@test.com //管理员邮箱地址
- DocumentRoot "/var/www/html/test2com" //指定网站根目录
- ServerName www.test2.com //域名
- ServerAlias www.dummy-host.example.com //别名
- ErrorLog "logs/www.test2.com-error_log" //错误日志
- CustomLog "logs/www.test2.com-access_log" common //访问日志
- <Directory "/var/www/html"> //设置目录访问权限
- Require all granted //允许所有
- </Directory>
- </VirtualHost>
然后重启Apache服务使配置生效。
小编有话说
创建基于web站点的虚拟主机是一项非常实用的技能,它可以帮助我们在同一台服务器上托管多个网站,从而节省成本并提高资源利用率,通过本文的介绍,相信大家对如何创建基于域名的虚拟主机有了更深入的了解,在实际工作中,我们还可以根据具体需求选择基于IP地址或基于端口的虚拟主机配置方式,希望本文能为大家的工作带来帮助!