虚拟主机:部署多个站点,每个站点,希望用不同的域名和站点目录,或者是不同的端口,不同的ip,需要虚拟主机功能。一句话,一个http服务要配置多个站点,就需要虚拟主机。
虚拟主机分类:基于域名、基于端口、基于ip;所谓的基于**,就是靠**来区分不同的站点,支持各种混合,N多个虚拟主机。
基于域名的虚拟主机配置如下:
创建环境:
站点目录 | 域名 |
/var/html/blog | blog.bqh123.com |
/var/html/bbs | bbs.bqh123.com |
[root@bqh- extra]# mkdir /var/html/{blog,bbs} -p
[root@bqh- extra]# touch /var/html/{blog,bbs}/index.html
[root@bqh- extra]# tree /var/html/
/var/html/
├── bbs
│ └── index.html
└── blog
└── index.html directories, files
[root@bqh- extra]# for name in blog bbs;do echo "http://$name.bqh123.com" >/var/html/$name/index.html;done
[root@bqh- extra]# for name in blog bbs;do cat /var/html/$name/index.html;done
http://blog.bqh123.com
http://bbs.bqh123.com
配置虚拟主机配置文件:httpd-vhosts.conf
[root@bqh- extra]# vim httpd-vhosts.conf #
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration. #
# Use name-based virtual hosting.
#
NameVirtualHost *: #
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:>
ServerAdmin @qq.com
DocumentRoot "/var/html/blog"
ServerName blog.bqh123.com
ServerAlias bg.bqh123.com
ErrorLog "logs/blog-error_log"
CustomLog "logs/blog-access_log" common
</VirtualHost> <VirtualHost *:>
ServerAdmin @qq.com
DocumentRoot "/var/html/bbs"
ServerName bbs.bqh123.com
ServerAlias bs.bqh123.com
ErrorLog "logs/bbs-error_log"
CustomLog "logs/bbs-access_log" common
/VirtualHost>
在主配置文件(httpd.conf)里激活生效:
- Include conf/extra/httpd-vhosts.conf
- Include conf/extra/httpd-mpm.conf
检测配置文件语法错误并刷新配置:
[root@bqh- extra]# ../../bin/apachectl -t
httpd: apr_sockaddr_info_get() failed for bqh-
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK
[root@bqh- extra]# ../../bin/apachectl graceful
httpd: apr_sockaddr_info_get() failed for bqh-
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
配置一下hosts解析:
[root@bqh- extra]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:: localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.119 blog.bqh123.com bbs.bqh123.com
windows系统,在“C:\Windows\System32\drivers\etc”下的hosts中配置一下域名解析:
----------------------------------------------------------------------------------
用cur或客户端浏览器测试一下:
解决方法:
在主配置文件(httpd.conf)追加一下内容:
<Directory "/var/html">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
检测配置文件语法错误,刷新配置,从新启动:
[root@bqh- conf]# vim httpd.conf
[root@bqh- conf]# ../bin/apachectl -t
httpd: apr_sockaddr_info_get() failed for bqh-
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK
[root@bqh- conf]# ../bin/apachectl graceful
httpd: apr_sockaddr_info_get() failed for bqh-
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
用cur或客户端浏览器测试一下:
---------------------------------------------------------------------------------
ok,Apache基于域名的虚拟主机配置及测试完成。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
基于端口的虚拟主机配置如下:
①在主配置文件httpd.conf里配置监听新增端口:
②在虚拟机配置文件httpd-vhosts.conf修改如下:
③检测配置文件语法错误,刷新配置,从新启动:
[root@bqh- conf]# ../bin/apachectl -t
httpd: apr_sockaddr_info_get() failed for bqh-
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK
[root@bqh- conf]# ../bin/apachectl graceful
httpd: apr_sockaddr_info_get() failed for bqh-
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[root@bqh- conf]# netstat -lntup|egrep "80|90"
tcp ::: :::* LISTEN /httpd
tcp ::: :::* LISTEN /httpd
④用cur或客户端浏览器测试一下:
注:如果不加端口访问,默认以ip的形式解析访问。
ok,Apache基于端口的虚拟主机配置及测试完成。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
基于IP的虚拟主机配置如下:
①添加别名IP
②在虚拟机配置文件httpd-vhosts.conf修改如下:
③检测配置文件语法错误,刷新配置,从新启动:
④用cur或客户端浏览器测试一下:
ok,Apache基于IP的虚拟主机配置及测试完成