Chinaunix首页 | 论坛 | 博客
  • 博客访问: 611695
  • 博文数量: 244
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-27 09:53
个人简介

记录学习,记录成长

文章分类

全部博文(244)

我的朋友

分类: LINUX

2015-08-11 22:02:41

1.搭建基于IP的虚拟主机
1.1  首先将主配置文件中的DocumentRoot行注释掉,表示采用虚拟主机;
#DocumentRoot "/var/www/html"
1.2  在/etc/httpd/conf.d目录中新建一个virtual.conf文件,将虚拟主机的配置内容写入其中;因为该目录下所有的.conf文件也是被包含进主配置文件中的,所以可以这样做,当然也可以在主配置文件/etc/httpd/conf/httpd.conf中添加虚拟主机的配置信息;
[root@localhost conf.d]# vim virtual.conf 
<VirtualHost 192.168.85.128:80>
        ServerName />         DocumentRoot "/var/www/a"
</VirtualHost>
#在虚拟主机容器中可以根据需要添加其他的功能,为了实验能简单进行,所以没添加其他选项;
<VirtualHost 192.168.85.133:80>
        ServerName />         DocumentRoot "/var/www/b"
</VirtualHost>
1.3  在/var/www目录下创建响应的目录
[root@localhost conf.d]# mkdir -pv /var/www/a
mkdir: created directory `/var/www/a'
[root@localhost conf.d]# mkdir -pv /var/www/b
mkdir: created directory `/var/www/b'
[root@localhost conf.d]# ll /var/www/
drwxr-xr-x   2 root root 4096 Aug 11 05:55 a
drwxr-xr-x   2 root root 4096 Aug 11 05:55 b
1.4  在两个目录中分别创建主页面
[root@localhost conf.d]# vim /var/www/a/index.html
<h1> /> [root@localhost conf.d]# vim /var/www/b/index.html
<h1> /> 1.5  此时网卡上只有一个IP,需要再创建一个IP
[root@localhost conf.d]# ifconfig 
eth0    Link encap:Ethernet  HWaddr 00:0C:29:45:83:CE  
          inet addr:192.168.85.128  Bcast:192.168.85.255  Mask:255.255.255.0
[root@localhost conf.d]# ip address add 192.168.85.133/24 dev eth0
[root@localhost conf.d]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:45:83:ce brd ff:ff:ff:ff:ff:ff
    inet 192.168.85.128/24 brd 192.168.85.255 scope global eth0
    inet 192.168.85.133/24 scope global secondary eth0
    inet6 fe80::20c:29ff:fe45:83ce/64 scope link 
       valid_lft forever preferred_lft forever
测试能否相互通信
[root@localhost conf.d]# ping 192.168.85.133
PING 192.168.85.133 (192.168.85.133) 56(84) bytes of data.
64 bytes from 192.168.85.133: icmp_seq=1 ttl=64 time=2.91 ms
64 bytes from 192.168.85.133: icmp_seq=2 ttl=64 time=0.139 ms
1.6  测试语法并重启服务测试
[root@localhost conf.d]# httpd -t
Syntax OK
[root@localhost conf.d]# service httpd restart
Stopping httpd: [  OK  ]
[  OK  ]
测试:
[root@localhost conf.d]# elinks --dump />                                     /> 测试:
[root@localhost conf.d]# elinks --dump />                                     />
2.搭建基于端口的虚拟主机
2.1  编辑虚拟主机的配置文件(也就是/etc/httpd/conf.d/virtual.conf),添加基于端口的虚拟主机的配置信息
现在既可以基于端口也可以基于IP
[root@localhost conf.d]# vim virtual.conf 
<VirtualHost 192.168.85.128:80>
        ServerName
        DocumentRoot "/var/www/a"
</VirtualHost>
<VirtualHost 192.168.85.133:80>
        ServerName />         DocumentRoot "/var/www/b"
</VirtualHost>
<VirtualHost 192.168.85.128:8080>
        ServerName />         DocumentRoot "/var/www/aa"
</VirtualHost>
2.2  创建相应的目录和主页面
[root@localhost conf.d]# mkdir -pv /var/www/aa
mkdir: created directory `/var/www/aa'
[root@localhost conf.d]# vim /var/www/aa/index.html
<h1> /> 2.3  在主配置文件中添加Listen 8080选项以保证能监听8080端口
Listen 80
Listen 8080
2.4  测试语法并重启服务测试
[root@localhost conf.d]# httpd -t
Syntax OK
[root@localhost conf.d]# service httpd restart
Stopping httpd: [  OK  ]
[  OK  ]
测试192.168.85.128:80
[root@localhost conf.d]# elinks --dump />                                     /> 测试192.168.85.128:8080
[root@localhost conf.d]# elinks --dump />                                     /> 3.基于名字的虚拟主机
在主配置文件中有NameVirtualHost   *:80选项表示监听的所有主机可以使用基于名字的虚拟主机;因为此次不是在主配置文件配置,所以没有管它而是写在了虚拟主机的配置文件中;
3.1  编辑虚拟主机的配置文件为(此次只让IP为192.168.85.133使用)
[root@localhost conf.d]# vim virtual.conf     
NameVirtualHost 192.168.85.133:80    #表示使用基于名字的虚拟主机
<VirtualHost 192.168.85.128:80>
        ServerName />         DocumentRoot "/var/www/a"
</VirtualHost>
<VirtualHost 192.168.85.133:80>
        ServerName
        DocumentRoot "/var/www/b"
</VirtualHost>
<VirtualHost 192.168.85.128:8080>
        ServerName />         DocumentRoot "/var/www/aa"
</VirtualHost>
<VirtualHost 192.168.85.133:80>
        ServerName />         DocumentRoot "/var/www/bb"
</VirtualHost>
3.2  创建相应的目录和主页面
[root@localhost conf.d]# mkdir -pv /var/www/bb
mkdir: created directory `/var/www/bb'
[root@localhost conf.d]# vim /var/www/bb/index.html
<h1> /> 3.3测试语法并重启服务测试测试
[root@localhost conf.d]# httpd -t
Syntax OK
[root@localhost conf.d]# service httpd restart
Stopping httpd: [  OK  ]
[  OK  ]
测试:
[root@localhost conf.d]# elinks --dump />                                     /> 这里显示 是因为符合基于名字的虚拟主机只有 和 ,named当用IP访问的时候回返回符合条件的第一个虚拟主机即   如果用其主机名访问那么会返回各自对应的结果;

而且,在Linux中用IP访问时用elinks命令可以访问而用主机名访问是却出现如下结果
[root@localhost conf.d]# elinks --dump http:// /> ELinks: Host not found
[root@localhost conf.d]# ping /> ping: unknown host /> 原因很明显不必多说,所以接下来可以编辑/etc/hosts文件添加上其IP和主机名
[root@localhost conf.d]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.85.133 /> 192.168.85.133 />
此时再测试
[root@localhost conf.d]# service httpd reload
Reloading httpd: 
[root@localhost conf.d]# elinks --dump http:// />                                     />
补充:以上我是在Linux上测试的,当然也可以在windows上用浏览器进行测试,前面基于IP和端口的都可以直接测试,这里只说基于名字的虚拟主机;
首先用浏览器测试时windows肯定是无法解析这些主机名的,所以需要再windows的hosts文件中添加上这些IP和对应的主机名才行
以我的windows为例,hosts文件是在这里的(如果找不到可以在C盘搜索hosts,而且该文件或存放的目录可能是隐藏的,记得打开显示隐藏文件选项):

找到后修改为(记得保存):

在浏览器上测试:
测试:

测试:

输入IP测试基于名字的虚拟主机的默认显示:


完成这些的时候可以在各种方法的虚拟主机上添加更多选项如CustomLog  ErrorLog  和针对访问这些站点目录中文件的用户的访问控制授权等等







阅读(2109) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~