您的位置:首页 > 运维架构 > Linux

Linux下Web服务器应用之虚拟主机

2013-05-12 22:27 615 查看
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。/article/4517553.html

Linux下Web服务器应用之虚拟主机

虚拟主机是在网络服务器上划分出一定的磁盘空间供用户放置站点、应用组件等,提供必要的站点功能、数据存放和传输功能。所谓虚拟主机,也叫“网站空间”,就是把一台运行在互联网上的服务器划分成多个“虚拟”的服务器,每一个虚拟主机都具有独立的域名和完整的Internet服务器(支持WWW,FTP,E-mail等)功能。虚拟主机:通过一个web
服务器可以提供多个网站服务。需要占用一个独特(排他性)的资源来提供服务。

Linux下实现虚拟主机的方法:

1. 物理目录

2. 虚拟目录

3. 基于ip地址的虚拟主机

4. 基于端口的虚拟主机

5. 基于主机头的虚拟主机

主要配置文件:/etc/httpd/conf/httpd.conf

993 #<VirtualHost *:80>

994 # ServerAdmin webmaster@dummy-host.example.com

995 # DocumentRoot /www/docs/dummy-host.example.com

996 # ServerName dummy-host.example.com

997 # ErrorLog logs/dummy-host.example.com-error_log

998 # CustomLog logs/dummy-host.example.com-access_log common

999 #</VirtualHost>

案例1:基于物理目录的虚拟主机

[root@www ~]# cd /var/www/html/ #切换至web目录下

[root@www html]# mkdir download #创建供下载的目录

[root@www download]# touch f1 f2 f3 #创建供下载的文件

[root@www ~]# vim /etc/httpd/conf/httpd.conf #编辑配置文件





[root@www ~]# service httpd restart #重启apache服务

Win7客户端测试结果如下:





案例2:基于虚拟目录的虚拟主机

[root@www ~]# mkdir /qq #创建物理目录

[root@www ~]# cd /qq #切换至要制作成虚拟的目录

[root@www qq]# touch qq1 qq2 qq3 #创建文件

[root@www qq]# vim /etc/httpd/conf/httpd.conf #编辑配置文件





[root@www ~]# service httpd restart #重启apache服务

Win7客户端测试结果如下:





案例3:基于ip地址的虚拟主机

[root@www ~]# cd /var/www/ #切换至www文件目录

[root@www www]# mkdir tec #创建tec文件夹

[root@www www]# mkdir mkt #创建mkt文件夹

[root@www www]# cat html/index.html #编辑www网页文件

--www

--xjzhujunjie

--2012/03/17

[root@www www]# cat mkt/index.html #编辑mkt网页文件

--mkt

--xjzhujunjie

--2012/03/17

[root@www www]# cat tec/index.html #编辑tec网页文件

--tec

--xjzhujunjie

--2012/03/17

[root@www ~]# ifconfig eth0:0 192.168.101.251 #新建网卡eth0:0

[root@www ~]# ifconfig eth0:1 192.168.101.252 #新建网卡eth0:0

[root@www ~]# vim /etc/httpd/conf/httpd.conf #编辑apache配置文件





[root@www ~]# service httpd restart #重启apache服务

Win7客户端测试在C:\Windows\System32\drivers\etc\hosts添加以下内容:

192.168.101.250 www.junjie.com

192.168.101.251 tec.junjie.com

192.168.101.252 mkt.junjie.com

Win7客户端测试结果如下:





案例4:基于ip端口的虚拟主机(请关闭firewall和
SELinux)


#1.首先关闭eth0:0和eth0:1网卡;

#2.新建网页文件(略)

[root@www ~]# vim /etc/httpd/conf/httpd.conf #编辑apache配置文件

134 Listen 80

135 Listen 800

136 Listen 8000





[root@www ~]# service httpd restart #重启apache服务

Win7客户端测试在C:\Windows\System32\drivers\etc\hosts添加:

192.168.101.250 www.junjie.com

Win7客户端测试结果如下:





案例5:基于主机头的虚拟主机

#新建网页文件(略)

[root@www ~]# vim /etc/httpd/conf/httpd.conf #编辑apache配置文件

#首先删除listen
800和listen 8000;

986 NameVirtualHost 192.168.101.250:80





[root@www ~]# service httpd restart #重启apache服务

Win7客户端测试在C:\Windows\System32\drivers\etc\hosts添加:

192.168.101.250 www.junjie.com

192.168.101.250 tec.junjie.com

192.168.101.250 mkt.junjie.com

Win7客户端测试结果如下:





案例6:基于ip端口的虚拟主机(开启SELinux)

SELinux引起的Apache基于端口的虚拟主机启动失败解决方案

#新建网页文件(略)
#使用端口800和8888

开启SELinux:





[root@www ~]# vim /etc/httpd/conf/httpd.conf #编辑apache配置文件









[root@www ~]# service httpd restart #重启apache服务,无法启动如下示:





因为SELinux设置的是Enforcing(强制)模式,于是使用semanage port -l |grep http,查看如下图,发现如下问题,它支持的端口只有80,443,448,8008,8009.8443并没有800和8888端口





此时可以使用semanage port -a -t http_port_t -p tcp 800来添加SELinux对800和8888端口的支持

[root@junjie ~]# semanage port -a -t http_port_t -p tcp 800

[root@junjie ~]# semanage port -a -t http_port_t -p tcp 8888

接下来查看端口,如下所示(SELinux已经支持800和8888端口):





此时再重新启动apache,看到正常启动。如下所示:





Win7客户端测试在C:\Windows\System32\drivers\etc\hosts添加:

192.168.101.250 www.junjie.com

Win7客户端测试结果如下:(正常访问)





《完》

--xjzhujunjie

--2012/03/17-17:37

本文出自 “xjzhujunjie
博客,请务必保留此出处/article/4517553.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: