zen-cart网站,模版,采集,二次开发

首页 » Linux » liunx基础 » 阅读文章

CentOS VPS配置多IP,多站点的方法

2012-03-29 13:05 35106 0 发表评论
标签:


查看网络信息

infconfig

可以查看到各物理网卡,虚拟网卡等信息

单网卡增加IP

增加新IP需要知道的是新的IP地址和子网掩码,假如需要增加的ip是192.168.1.197,子网掩码是255.255.255.0

在目录/etc/sysconfig/network-scripts/ 下面是一些网卡的配置文件,新增加一个额外IP地址,需要在这个目录下新增加一个新网卡配置文件。额外IP的网卡配置文件的文件名是有要求的,必须是ifcfg-eth0:XXXX的形式,其中eth0代表物理网卡,eth0:XXXX 代表是附加在这个物理网卡上的虚拟网卡,XXXX可以是1到4位的字符串,字符串内容可以包含任意字母和数字。

cd /etc/sysconfig/network-scripts/
vi ifcfg-eth0:1
##输入##
DEVICE=eth0:1
BOOTPROTO=static
IPADDR=100.200.300.400
NETMASK=255.255.255.0
ONBOOT=yes

然后重启网卡即可

service network restart

多站点配置

多站点配置需要使用apahce中的虚拟主机功能,虚拟主机指的是在单一机器上运行多个网站 ,一般原则是一个网站对应一个虚拟主机

Apache的虚拟主机主要分两种:基于ip的虚拟主机和基于域名的虚拟主机

Apache配置文件httpd.conf给末尾给出了一个示例的

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com   #服服务器出错的发信地址(可选)
    DocumentRoot /www/docs/dummy-host.example.com  #放置服务文档的目录
    ServerName dummy-host.example.com						#主机名
    ErrorLog logs/dummy-host.example.com-error_log 		#错误日志 (可选)
    CustomLog logs/dummy-host.example.com-access_log common #访问日志 (可选)
</VirtualHost>

注:apache配置文件修改后,要重启apahce生效 service httpd restart

假设

192.168.1.197 www.a.com
192.168.1.196 www.b.com
192.168.1.196 www.c.com

为了方便测试我们也可以修改windows下的C:\WINDOWS\system32\drivers\etc\hosts文件,和centos下/etc/hosts文件实现

对于单纯的基于域名的虚拟主机

配置文件httpd.conf末尾增加

NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot /var/www/html/a.com
    ServerName www.a.com
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /var/www/html/b.com
    ServerName www.b.com
</VirtualHost>

对于单纯的基于IP的虚拟主机

#Listen 80  #默认就监听的
<VirtualHost 192.168.1.197>
    DocumentRoot /var/www/html/a.com
    ServerName www.a.com
</VirtualHost>
<VirtualHost 192.168.1.196>
    DocumentRoot /var/www/html/b.com
    ServerName www.b.com
</VirtualHost>
#也可以直接IP访问
<VirtualHost 192.168.1.195>
    DocumentRoot /var/www/html
    ServerName 192.168.1.195
</VirtualHost>

对于混合使用的虚拟主机

NameVirtualHost 192.168.1.196:80
<VirtualHost www.c.com:80>
    DocumentRoot /var/www/html/c.com
    ServerName www.c.com
</VirtualHost>
<VirtualHost www.b.com:80>
    DocumentRoot /var/www/html/b.com
    ServerName www.b.com
</VirtualHost>
<VirtualHost www.a.com:80>
    DocumentRoot /var/www/html/b.com
    ServerName www.a.com
</VirtualHost>
<VirtualHost 192.168.1.195>
    DocumentRoot /var/www/html
    ServerName 192.168.1.195
</VirtualHost>

NameVirtualHost的使用

如果某个ip:port 上只设置了一个虚拟主机,那么NameVirtualHost ip:port 可以不写,因为从这个ip:port的访问不需要做任何选择;如上例中192.168.1.197只对应于www.a.com,所以不用指定NameVirtualHost

如果某个ip:port 上设置了多于一个虚拟主机,那么必须使用指令NameVirtualHost ip:port ,否则从该ip:port的访问只访问第一个该ip:port 的虚拟主机(因为它优先,apache启动时会提示的);如上例中192.168.1.196对应www.b.com 和www.c.com,指定NameVirtualHost为NameVirtualHost 192.168.1.196:80

如果使用了指令NameVirtualHost ip:port ,却没有为该ip:port定义任何虚拟主机,好像不会出现访问到错误的虚拟主机的问题(因为谁也不知道你想干什么,不过apache还是会提示你:[warn] NameVirtualHost ip:port has no VirtualHosts);

如果VirtualHost 指定的虚拟主机没有匹配一个NameVirtualHost 指令,那么该虚拟主机不会被用到(除非他是第一个虚拟主机),这相当于没有NameVirtualHost 指令,即:如果有多个虚拟主机,一定要有NameVirtualHost 指令

注意

1.NameVirtualHost 指定虚拟主机所使用的IP地址或域名,但是最好是IP地址。使用基于域名的虚拟主机时,NameVirtualHost是必要的指令。NameVirtualHost可以定义多个。

2.虚拟主机混用可以这样理解:一行NameVirtualHost指令定义的所有虚拟主机为一组;该组与一个基于IP的虚拟主机平级。即把一行NameVirtualHost定义的整个组看作是一个基于IP的虚拟主机。

3.虚拟主机指定的端口必须是Listen定义的。如果虚拟主机没有指定端口,则认为是80端口。

参考:http://hi.baidu.com/dtzw/blog/item/b56eae1e7d6b550d403417d4.html

相关日志:

评论 共0条 (RSS 2.0) 发表评论

  1. 暂无评论,快抢沙发吧。

发表评论

  • 
  • 插入代码

联系我 Contact Me

回到页首