文章目录
前言:
虚拟主机是提供网站服务的集成环境,比如:linux Apache+php+mysq LAMP就是常说的建站开通的空间,所以Apache服务器只是虚拟主机的一种架构。
简单来说,Apache虚拟主机就是在一个Apache服务器上配置多个虚拟空间,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录。
一、虚拟主机概述
1.1 构建虚拟主机
- 虚拟Web主机
在同一台服务器中允许多个Web站点,其中每个站点并不独立占用一台真正的计算机
-
httpd支持的虚拟主机类型
基于域名的虚拟主机
基于IP地址的虚拟主机
基于端口的虚拟主机
二、实验
2.1 实验环境
-
打开一台centos虚拟机
-
安装bind、httpd软件
-
关闭防火墙
2.2 基于域名构建虚拟主机
构建2个虚拟Web站点
- www.ceshi.com ,地址为192.168.181.129(虚拟机ens33的地址)
- www.ceshi2.com,地址为192.168.181.129(虚拟机ens33的地址)
实验目的:在浏览器中访问这两个域名时,分别显示不同的内容
2.2.1 配置DNS
- 修改DNS主配置文件
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { any; }; ##将地址修改为any
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; ##同时允许所有主机访问
..............省略部分内容
-------》wq (保存)
- 修改DNS区域配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "ceshi.com" IN {
type master;
file "ceshi.com.zone";
allow-update { none; };
};
zone "ceshi2.com" IN {
type master;
file "ceshi2.com.zone";
allow-update { none; };
};
##添加dns区域数据配置文件指向的cd 位置
..........省略部分内容
- 修改DNS区域数据配置文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# cp -p named.localhost ceshi.com.zone
## 复制区域数据配置文件,复制文件为在区域文件中指向的文件名
[root@localhost named]# ls
ceshi.com.zone dynamic named.empty named.loopback
data named.ca named.localhost slaves
[root@localhost named]# vim ceshi.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
www IN A 192.168.181.167 ##指向本机
##删除IPV6的解析,添加主机A记录
------》wq(保存)
[root@localhost named]# cp -p ceshi.com.zone ceshi2.com.zone
[root@localhost named]# ls
ceshi2.com.zone data named.ca named.localhost slaves
ceshi.com.zone dynamic named.empty named.loopback
- 开启服务、测试解析
[root@localhost named]# systemctl start named
使用一台win10或者宿主机进行测试
2.2.2 虚拟主机设置
- 添加虚拟主机子配置文件
[root@localhost named]# cd /etc/httpd
[root@localhost httpd]# ls
conf conf.d conf.modules.d logs modules run
[root@localhost httpd]# cd conf
[root@localhost conf]# ls
httpd.conf magic
[root@localhost conf]# mkdir extra
[root@localhost conf]# ls
extra httpd.conf magic
[root@localhost conf]# cd extra/
[root@localhost extra]# vim vhost.conf
<VirtualHost *:80>
DocumentRoot "/var/www/html/ceshi/" ##站点目录
ServerName www.ceshi.com ##域名
Errorlog "logs/www.ceshi.com.error_log" ##错误日志
Customlog "logs/www.ceshi.com.access_log" common ##访问日志 一定要加common(引用以下directory)
<Directory "/var/www/html/">
Require all granted ##权限:允许所有用户访问
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/html/ceshi2/" ##站点目录
ServerName www.ceshi2.com ##域名
Errorlog "logs/www.ceshi2.com.error_log" ##错误日志
Customlog "logs/www.ceshi2.com.access_log" common ##访问日志 一定要加common(引用以下directory)
<Directory "/var/www/html/">
Require all granted ##权限:允许所有用户访问
</Directory>
</VirtualHost>
-------------》wq
注意:错误日志与访问日志的路径指的是相对路径(相对于/httpd目录的路径)
- 添加两个站点首页
[root@localhost extra]# cd /var/www/html
[root@localhost html]# ls
[root@localhost html]# mkdir ceshi ceshi2
[root@localhost html]# ls
ceshi ceshi2
[root@localhost html]# cd ceshi
[root@localhost ceshi]# ls
[root@localhost ceshi]# vim index.html
<h1>this is ceshi</h1> ##编写ceshi的主页
[root@localhost ceshi]# cd ..
[root@localhost html]# cd ceshi2
[root@localhost html]# vim index.html
<h1>this is ceshi2</h1> ##编写ceshi2的主页
- 在主配置文件中添加子配置文件的加载项
[root@localhost ~]# cd /etc/httpd/conf
[root@localhost conf]# vim httpd.conf
##输入G到末行,添加引导项(导向子配置文件,此处路径也引用的是相对路径(相对httpd目录)
Include conf/extra/vhost.conf
--------》wq
- 启动服务
[root@localhost httpd]# systemctl start httpd
2.2.3 使用win10虚拟机进行测试
输入www.ceshi.com:
输入www.ceshi2.com:
以上为基于不同域名的方式创建虚拟主机
2.3 基于端口构建虚拟主机
2.3.1 修改子配置文件
这里接着以上的配置进行修改
首先复制www.ceshi.com的配置,粘贴到尾行。
[root@localhost extra]# cd /etc/httpd/conf/extra/
[root@localhost extra]# vim vhost.conf
<VirtualHost *:80>
DocumentRoot "/var/www/html/ceshi/"
ServerName www.ceshi.com
Errorlog "logs/www.ceshi.com.error_log"
Customlog "logs/www.ceshi.com.access_log" common
<Directory "/var/www/html/">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:8080> ##直接将端口改为8080
DocumentRoot "/var/www/html/ceshi2/"
ServerName www.ceshi2.com
Errorlog "logs/www.ceshi2.com.error_log"
Customlog "logs/www.ceshi2.com.access_log" common
<Directory "/var/www/html/">
Require all granted
</Directory>
</VirtualHost>
------>保存
2.3.2 创建ceshi3的站点
[root@localhost extra]# cd /var/www/html
[root@localhost html]# ls
ceshi ceshi2
[root@localhost html]# mkdir ceshi3
[root@localhost html]# cd ceshi3
[root@localhost ceshi3]# vim ceshi3
<h1>this is ceshi3</h1>
##简单编写ceshi3的主页内容
2.3.3 添加主配置文件的监听地址
[root@localhost ceshi3]# vim /etc/httpd/conf/httpd.conf
###输入/Listen 查询到监听地址,修改、添加监听地址
Listen 192.168.181.167:80 #IP为本机地址
Listen 192.168.181.167:8080 #IP为本机地址,添加端口8080
#Listen 80 #关闭ipv6监听地址
-----------》wq
- 重启服务
[root@localhost extra]# systemctl restart httpd
2.3.4 使用win10虚拟机测试
输入www.ceshi2.com:8080
输入www.ceshi.com
以上为基于不同端口创建虚拟主机
2.4 基于IP地址的虚拟主机
2.4.1 添加网卡
2.4.2 修改子配置文件
[root@localhost extra]# vim vhost.conf
<VirtualHost 192.168.181.171:80> #修改地址为ens33的IP
DocumentRoot "/var/www/html/ceshi/"
#ServerName www.ceshi.com #注释域名
Errorlog "logs/www.ceshi.com.error_log"
Customlog "logs/www.ceshi.com.access_log" common
<Directory "/var/www/html/">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.181.129:80> ##修改地址为ens36的IP
DocumentRoot "/var/www/html/ceshi2/"
#ServerName www.ceshi2.com #注释域名
Errorlog "logs/www.ceshi2.com.error_log"
Customlog "logs/www.ceshi2.com.access_log" common
<Directory "/var/www/html/">
Require all granted
</Directory>
</VirtualHost>
------》wq
2.4.3 修改目录站点
[root@localhost extra]# cd /var/www/html
[root@localhost html]# ls
ceshi ceshi2
[root@localhost html]# cd ceshi
[root@localhost ceshi]# vim index.html
<h1>this is 171 ceshi</h1>
[root@localhost extra]# cd /var/www/html/ceshi2
[root@localhost ceshi2]# vim index.html
<h1>this is 129 ceshi2</h1>
2.4.4 修改监听地址
[root@localhost ceshi2]# vim /etc/httpd/conf/httpd.conf
##输入/Listen 找到监听地址
Listen 192.168.181.171:80
Listen 192.168.181.129:80 ##添加本地ens36的IP地址
#Listen 192.168.181.171:8080 ##关闭8080端口
#Listen 80
-----------------》wq
- 开启服务
[root@localhost ceshi2]# systemctl restart httpd
2.4.5 使用win10虚拟机测试
开启浏览器输入192.168.181.129 :
开启浏览器输入192.168.181.171 :
2.4.6 改为使用域名访问
正常的生产环境是直接输入域名的,这里我们可以先修改子配置文件,加上域名:
[root@localhost extra]# vim vhost.conf
<VirtualHost 192.168.181.171:80> #修改地址为ens33的IP
DocumentRoot "/var/www/html/ceshi/"
ServerName www.ceshi.com #注释域名
Errorlog "logs/www.ceshi.com.error_log"
Customlog "logs/www.ceshi.com.access_log" common
<Directory "/var/www/html/">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.181.129:80> ##修改地址为ens36的IP
DocumentRoot "/var/www/html/ceshi2/"
ServerName www.ceshi2.com #注释域名
Errorlog "logs/www.ceshi2.com.error_log"
Customlog "logs/www.ceshi2.com.access_log" common
<Directory "/var/www/html/">
Require all granted
</Directory>
</VirtualHost>
------》wq
然后更改DNS服务的区域数据配置文件
[root@localhost named]# cd /var/named
[root@localhost named]# ls
ceshi2.com.zone data named.ca named.localhost slaves
ceshi.com.zone dynamic named.empty named.loopback
[root@localhost named]# vim ceshi2.com.zone
......
www IN A 192.168.181.129 ##将IP地址改为ens36的地址
------》wq
- 重启服务
[root@localhost named]# systemctl restart named
[root@localhost named]# systemctl restart httpd
2.4.6 使用win10虚拟机测试
输入www.ceshi.com
输入www.ceshi2.com
总结
现网中最省钱的方式是不同端口访问不同IP,常用的方法为做一个main引导页面,然后其中指向各种子页面。
来源:CSDN
作者:weixin_45726050
链接:https://blog.csdn.net/weixin_45726050/article/details/103581217