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

Apache服务器的架设(虚拟主机)

2012-05-18 20:15 239 查看
前言:一些公司拥有多个网站,可是每个网站不可能在一台服务器上跑,因为成本太高了,然而虚拟主机可以解决该问题,虚拟主机使得一台服务器可以运行多个网站。而配置虚拟主机的方法有三种,分别是:基于IP地址不同端口的虚拟主机、基于不同IP地址的虚拟主机、基于域名的虚拟主机这三种,下面就对他们各自进行详述吧!
1. 检查是否安装了Apache的相关组件,同时关闭掉防火墙先(免得忘记,^_^),截图如下:



2. 配置基于IP地址不同端口的虚拟主机:配置一台虚拟主机,其Ip地址为192.168.10.100,分别使用8000和8080端口,其Web站点的根目录分别为/var/www/html/IP_8000和/var/www/html/IP_8080。同时在IP_8000目录和IP_8080目录下分别建立Index.html文件,并分别在Index.html文件中添加一些内容。截图如下:



3. 查看一下网卡的IP地址,如果网卡的Ip地址不是我们所需要的那个IP地址的话,我们可以创建临时起作用的IP地址,输入命令“ifconfig
eth0 192.168.10.100 netmask 255.255.255.0”.查看一下网卡IP地址截图如下:



4. 编辑/etc/httpd/conf/httpd.conf文件,设置其内容,在配置文件的最后面就是虚拟主机的设置,这里只截关键的图,截图如下:





架设同一IP地址不同端口的多个虚拟主机时,Listen参数值为端口号,而在<VirtualHost IP地址:端口号>语句块中,指定了DocumentRoot参数值就制定虚拟主机的站点目录。
5. 输入命令“service
httpd restart”,重启httpd服务,同时在windows计算机中启动IE,地址栏中输入:http://192.168.10.100:8000,和http://192.168.10.100:8080,显示如下图所示:







6. 基于相同IP地址不同端口的虚拟主机测试成功。
7. 基于不同IP地址的虚拟主机:配置一台虚拟主机,其Ip地址分别是192.168.10.100和192.168.10.196,其web站点的根目录为/var/www/html/IP_100和/var/www/html/IP_196.并且在IP_100和IP_196两个目录下分别创建Index.html文件,并写入一些内容到Index.html文件中。截图如下:


8. 由于我的虚拟机上用了两块网卡,eth0的IP地址是192.168.10.196,另一块网卡eth1的IP地址是192.168.10.100,所以我就决定用着两块网卡来做实验,如果你只有一块网卡的话,那么你也不用着急怕做不了这个实验,因为Linux中的网卡支持虚拟子接口,所以使用“ifconfig
eth0:0 192.168.10.100”和“ifconfig eth0:1 192.168.10.196”就可以实现了,但是要让这些子接口有效的话,一定要保证eth0这个网卡是启动有效的。由于我有两块网卡,所以我就用两块网卡做实验,截图如下:



9. 编辑/etc/httpd/conf/httpd.conf文件,设置其内容,在配置文件的最后面就是虚拟主机的设置,添加下面截图的内容,这里只截关键的图,截图如下:



10.输入命令“service
httpd restart”,重启httpd服务,同时在windows计算机中启动IE,地址栏中输入http://192.168.10.100,和http://192.168.10.196显示虚拟主机的主页如下:截图如下:





11.基于不同IP地址的虚拟主机测试成功
12.基于域名的虚拟主机:配置一虚拟主机,其IP地址为192.168.10.100,设置两个虚拟主机,其域名分别是product.redhat.com和service.redhat.com.(注:由于我的DNS服务器已经搭建好了,用的域名是redhat.com,在这里我就不再做详细介绍,可以去看《DNS服务器的架设》这份文档,这里就把主区域和反向区域进行截图)。我们在/var/www/http/目录下分别建立Vhost_service和Vhost_product目录,并分别在两个目录中创建Index.html文件,截图如下:



13.创建DNS服务器的配置文件,输入命令“vim
/var/named/chroot/etc/named.conf”,文件内容如下:



14.编辑redhat.com这个域的正向区域文件,输入命令“vi
/var/named/chroot/var/named/yangzexin.redhat.com”,编辑的内容如下,product.redhat.com和service.redhat.com与IP地址192.168.10.100的对应关系。



15.编辑redhat.com这个域的反向区域文件,输入命令“vi
/var/named/chroot/var/named/192.168.10.in-addr.arpa”,编辑的内容如下,IP地址192.168.10.100和域名product.redhat.com和service.redhat.com的对应关系。



16.启动named守护进程,输入命令“service
named Start”
17.编辑/etc/httpd/conf/httpd.conf文件,添加内容如下,截图如下:



架设不同域名的多个虚拟主机是,<VirtualHost IP地址:端口号>语句块的Servicename参数值就是虚拟主机的域名,DocumentRoot参数值就是指定虚拟主机的站点目录。
18.重启httpd守护进程,输入命令“service
httpd restart”重启。
19.在windows计算机下打开IE浏览器,在地址栏输入:http://service.redhat.comhttp://product.redhat.com将分别显示/var/www/html/Vhost_service和
/var/www/html/Vhost_product目录下Index.html文件的内容,如图所示:





配置时出现的问题及解决方法有:

# service httpd start

问题一:配置apache多个虚拟主机以后,重启,出现以下错误提示:

[warn] NameVirtualHost *:80 has no VirtualHosts

原因:NameVirtualHost语法错误,对于同一主机支持多个虚拟主机的情况,只需要命名一次NameVirtualHost,如果在每个虚拟主机配置文件中都加上NameVirtualHost *:80
,则会报这个警告。

原来在/etc/apache2/ports.conf中定义了*:80的 VirtualHost。找到了这个后呢,接下来一切就都顺利了。删除之前添加的NameVirtualHost,将所有vhost相应的地方都改成*:80。OK,一切非常顺利地解决了。

NameVirtualHost 192.168.1.232在所有httpd.conf中只需添加一次,如果添加多次也会出现上述错误。

问题二:You don't have permission to access /hello.php on this server

配置apache后访问网页出现“HTTP 错误 403 - 禁止访问,即
403 Forbidden:You don't have permission to access / on this server”。

这是由于你更改了你的DocumentRoot,而更改了这个默认值后,下面还有一个值是要随着更改的。就在它下面不远的地方,有这样一段:

#

# This should be changed to whatever you set DocumentRoot to.

#

<Directory "\Your_New_DocumentRoot">

中括号里的内容就是你更改的新值。这样就不会出现403错误了。

<Directory "/var/www/html1/">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

如果是Deny from all,则把Deny from all中的Deny改成了Allow,保存后重起了apache,然后再一测试我的网页

参考:http://yangzexin07.blog.51cto.com/767128/227848/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: