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

apache基本配置管理(二):apache虚拟主机配置管理

2017-02-07 12:41 393 查看
apache基于IP,port和域名三种虚拟主机配置方法

虚拟主机:
众所周知,一台物理服务器只能运行一个站点,但如若想实现一台服务器运行多个站点时,就不得不用到虚拟主机了。虚拟主机,顾名思义,就是一个虚拟出来的主机,当在服务单配置完成后,客户端访问时就像是访问了多个后端服务器。

实现虚拟主机有三种不同的方式:基于IP的虚拟主机:使用不同的IP地址提供不同的站点
基于PORT的虚拟主机:使用不同的端口提供不同的站点
基于HOSTNAME的虚拟主机:使用不同的主机名提供不同站点

一、基于端口,即基于不同的端口,相同的IP的虚拟主机
基于相同ip不同port的虚拟主机
 
  1)vi /etc/http/conf/httpd.conf
  2)将Listen字段改为
  Listen 80
  Listen 8888
  (以上设置表示使用80以及8888端口)
  
  3)更改虚拟主机部分为:
  <VirtualHost 192.168.0.1:80>
  DocumentRoot /var/www/html/website1

ServerName www.website1.com
  </VirtualHost>
  <VirtualHost 192.168.0.1:8888>;
  DocumentRoot /var/www/html/website2

ServerName www.website2.com
  </VirtualHost>
  
  4)保存以上设置
  
  5)创建目录以及页面文件:
  #mkdir –p /var/www/html/website1
  #mkdir –p /var/www/html/website2
  #cd /var/www/html/website1
  #cat >index.html <<EOF
  >website1
  >EOF
  #cd /var/www/html/website2
  #cat >index.html <<EOF
  >website2
  >EOF

补充关于EOF:
在shell中,文件分界符(通常写成EOF,你也可以写成FOE或者其他任何字符串)紧跟在<<符号后, 意思是分界符后的内容将被当做标准输入传给<<前面的命令
使用格式基本是这样的:
命令 << EOF
内容段
EOF
将“内容段”整个作为命令的输入。
你的代码里就是用cat命令读入整段字符串并赋值给list变量。
其实,不一定要用EOF,只要是“内容段”中没有出现的字符串,都可以用来替代EOF,只是一个起始和结束的标志罢了。

有个特殊用法不得不说:
: << COMMENTBLOCK
shell脚本
COMMENTBLOCK
这个用来注释整段脚本代码。 : 是shell中的空语句。
搜索一下 Here document 你会明白更多。

注:在/etc/httpd/conf/httpd.conf中有DirectoryIndex index.html index.html.var,表示只读index.html,而不读index.htm,切记
  
  6)service httpd restart
  完成以上设置后,可以通过以下方式访问:
  1)打开浏览器
  2)输入http://192.168.0.1:80以及http://192.168.0.1:8888
  
 二、基于IP,即基于不同IP,相同端口的虚拟主机
基于相同Port不同IP的虚拟主机
  
  1)不同IP地址的配置:
  #cd /etc/sysconfig/network-scripts
  #cp ifcfg-eth0 ifcfg-eth0:1
  #vi ifcfg-eth0:1
  将eth0:1更改为:
  DEVICE=eth0:1
  ONBOOT=YES
  BOOTPROTO=static
  IPADDR=192.168.0.2
  NETMASK=255.255.255.0
ifconfig eth0:1 192.168.1.200 临时生效,需要写入到/etc/sysconfig/network-scripts/ifcfg-eth0:1配置文件,临时生效同时也可以带上网关和掩码 ifconfig eht0:1 192.168.1.200 netmask 255.255.255.0 broadcast 192.168.1.255 up

2)service network restart
  3)vi /etc/httpd/conf/httpd.conf
  4)更改虚拟主机部分为:
  <VirtualHost 192.168.0.1:80>
  DocumentRoot /var/www/html/website1
  </VirtualHost>
  <VirtualHost 192.168.0.2:80>
  DocumentRoot /var/www/html/website2
  </VirtualHost>
  5)创建目录以及页面文件:
  #mkdir –p /var/www/html/website1
  #mkdir –p /var/www/html/website2
  #cd /var/www/html/website1
  #cat >index.html <<EOF
  >website1
  >EOF
  #cd /var/www/html/website2
  #cat >index.html <<EOF
  >website2
  >EOF
  
  完成以上设置后,可以通过以下方式访问:
  
  1)打开浏览器
  2)输入http://192.168.0.1:80以及http://192.168.0.2:80

三、基于主机名,即基于域名的虚拟主机的访问
  
  3.基于域名的虚拟主机的访问
1) 设置域名映射同一个IP,为了使主机名解析成功,需要修改host文件,我们此处使用win下浏览器测试,故而需要修改win下hosts文件,路径为:

192.168.0.1 www1.example.com
192.168.0.1 www2.example.com

  2)创建目录以及页面文件:
  #mkdir –p /var/www/html/website1
  #mkdir –p /var/www/html/website2
  #cd /var/www/html/website1
  #cat >index.html <<EOF
  >website1
  >EOF
  #cd /var/www/html/website2
  #cat >index.html <<EOF
  >website2
  >EOF
  
3)在httpd-vhosts.conf配置虚拟主机部分为:
  NameVirtualHost 192.168.0.1 [NameVirtualHost *.80]
  <VirtualHost www1.example.com>
  DocumentRoot /var/www/html/website1
  ServerName www1.example.com
  </VirtualHost>
  <VirtualHost www2.example.com>
  DocumentRoot /var/www/html/website2
  ServerName www2.example.com
  </VirtualHost>
  (注:以上设置中NameVirtualHost不可以省略)

4)完成以上设置后,可以通过以下方式访问:
  1)打开浏览器
  2)输入http://www1.example.com 以及 http://www2.example.com
发现不能正常访问,配置的虚 含进来,在http.conf中搜索vhost这行,然后开启该行,然后重启动服务即可。

补充:
为了使用基于域名的虚拟主机,必须指定服务器IP地址(和可能的端口)来使主机接受请求。可以用NameVirtualHost指令来进行配置。 如果服务器上所有的IP地址都会用到, 你可以用*作为NameVirtualHost的参数。在NameVirtualHost指令中指明IP地址并不会使服务器自动侦听那个IP地址。 这里设定的IP地址必须对应服务器上的一个网络接口。
  下一步就是为你建立的每个虚拟主机设定<VirtualHost>配置块,<VirtualHost>的参数与NameVirtualHost指令的参数是一样的。每个<VirtualHost>定义块中,至少都会有一个ServerName指令来指定伺服哪个主机和一个DocumentRoot指令来说明这个主机的内容存在于文件系统的什么地方。
  如果在现有的web服务器上增加虚拟主机,必须也为现存的主机建造一个<VirtualHost>定义块。其中ServerName和DocumentRoot所包含的内容应该与全局的保持一致,且要放在配置文件的最前面,扮演默认主机的角色。

NameVirtualHost *:80
<VirtualHost *:80>
  ServerName *
  DocumentRoot /www/
</VirtualHost>
<VirtualHost *:80>
  ServerName www.test1.com
  DocumentRoot /www/test1/
  <Directory "/www/test1">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerName www.test2.com
  DocumentRoot /www/test2/
  <Directory "/www/test2">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>
<VirtualHost *:80>
  ServerName www.test3.com
  DocumentRoot /www/test3/
  <Directory "/www/test3">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

参考地址:

http://www.cnblogs.com/hi-bazinga/archive/2012/04/23/2466605.html

http://blog.csdn.net/joliny/article/details/2514293
http://8522726.blog.51cto.com/8512726/1894826?b3



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  方式 apche 中配置