企业真实环境中,一台 web 服务器发布单个网站非常浪费资源,所以一台 Web 服务器上会发布多个网站,少则 3~5 个,多则 2~30 个网站。在一台服务器上发布多网站,也称之为部署多个虚拟主机,Web 虚拟主机配置方法有以下三种:
- 基于单 IP 多个 socket 端口;
- 基于多 IP 地址一个端口;
- 基于单 IP 一个端口不同域名。
其中基于同一端口不同域名的方式在企业中得到广泛应用,以下为基于一个端口不同域名,在一台 Apache Web 服务器上部署多个网站,步骤如下:(配置前保证主机能够 ping 通 CentOS,即 Apache服务器端)
1)创建虚拟主机配置文件 httpd-vhosts.conf ,该文件默认已存在,只需去掉 httpd.conf 配置文件中的 # 号即可。
vim httpd.conf
2)修改配置文件 /usr/local/apache2/conf/extra/httpd-vhosts.conf 中代码,设置如下:
# 开启虚拟主机,并且监听本地所有网卡接口的80端口
NameVirtualHost *:80
# 虚拟主机配置起始
<VirtualHost *:80>
# 管理员邮箱,记得改!!不要盲目复制!!
ServerAdmin chen-jialing@qq.com
# 虚拟主机发布目录
DocumentRoot "/usr/local/apache2/htdocs/test1"
# 虚拟主机完整域名
ServerName www.test1.com
# 错误日志路径及文件名
ErrorLog "logs/www.test1.com_error_log"
# 访问日志路径及文件名
CustomLog "logs/www.test1.com_access_log" common
# 虚拟主机配置结束
</VirtualHost>
# 虚拟主机配置起始
<VirtualHost *:80>
# 管理员邮箱,记得改!!不要盲目复制!!
ServerAdmin chen-jialing@qq.com
# 虚拟主机发布目录
DocumentRoot "/usr/local/apache2/htdocs/test2"
# 虚拟主机完整域名
ServerName www.test2.com
# 错误日志路径及文件名
ErrorLog "logs/www.test2.com_error_log"
# 访问日志路径及文件名
CustomLog "logs/www.test2.com_access_log" common
# 虚拟主机配置结束
</VirtualHost>
3)创建 www.test1.com 及 www.test2.com 发布目录,重启 Apache 服务,并分别创建 index.html 页面,命令如下:
mkdir -p /usr/local/apache2/htdocs/{test1,test2}/
/usr/local/apache2/bin/apachectl restart
echo "<h1>www.test1.com Pages</h1>" > /usr/local/apache2/htdocs/test1/index.html
echo "<h1>www.test2.com Pages</h1>" > /usr/local/apache2/htdocs/test2/index.html
4)Windows 客户端设置 hosts 映射,将 www.test1.com、www.test2.com 与 Apache 服务器的 IP 地址 进行映射绑定,映射的目的将域名跟 IP 进行绑定,在浏览器可以输入域名,不需要输入 IP 地址,绑定方法是在 “C:\Windows\System32\drivers\etc” 文件夹中,使用记事本编辑 hosts 文件,加入如下代码
IP地址 www.test1.com
IP地址 www.test2.com
5)浏览器访问 www.test1.com、www.test2.com,至此 Apache 基于多域名虚拟主机配置完毕,如果还需要添加虚拟主机,直接复制其中一个虚拟主机配置、修改 Web 发布目录即可。