Apache下域名虚拟主机在个人主页目录上实现过程
实验背景:
Contoso目前是提供虚拟主机的公司。xiaonuo公司和dreamfire公司想在Contoso上申请虚拟主机为各自公司提供web服务。要求申请的域名分别为
www.xiaonuo.com
和
www.dreamfire.com
。为了节省IP地址,决定使用主机头区分各个虚拟主机。
实验步骤:
一、 Apache的安装(开发源代码应用程序的编译安装)
RHEL4默认安装了Apache服务,根目录在/etc/httpd/下,主配置文件在/etc/httpd/conf/httpd.conf下,文档根目录在/var/www/html/,启动脚本为/etc/init.d/httpd中。
本实验通过编译安装的方式安装Apache服务程序。
注意:安装完成之后,在Linux系统中有两套Apache服务程序,而且两者都能为用户提供WEB服务,启用那个服务,那个Apache程序就为用户提供服务。而在现实环境中,两个都是存在的,默认安装的作为编译安装的备份,配置过程中可将两者都配置成一样,当其中的一个坏掉之后可以直接启用另外一个。可以做到冗余备份的作用。而在Windows下在一台主机上安装两台WEB服务器是不可能的,除非做群集实现。
1、 确认系统中已经安装了编译环境
对任何应用程序的源代码进行编译安装之前都需要确认当前系统中已经安装了gcc编译器环境。
注意:如果没有安装编译环境可以通过在应用程序管理器工具中选中“Development Tools”单击“update”按钮,然后按提示从第四张光盘开始安装直到完成。
2、 下载Apache程序的源代码安装包文件
为了与RHEL4系统中的Apache版本保持基本一致,可以使用下面的命令下载Apache服务器的2.0.59版的源代码软件包。
注意:Apache服务器有1.X和2.X两个版本,1.X版本目前最高的是1.3,这个版本对以前的老版本有较好的兼容性。运行也是相当的稳定。2.X版本相对于1.X版本增加了更多的功能特性,对于新建立的应用系统,Apache的2.X版本是一个不错的选中。目前Apache的2.X版本有2.0和2.2两个主要版本,2.2版本增加了很多新特性,但2.0版本相对于2.2较稳定。
在liunx中下载的方法为:#wget
http://mirror.vmmatrix.net/apache/httpd/httpd-2.0.59.tar.gz
本实验中已下载好了,挂载到/mnt/hgfs/liunx/目录下。
3、 释放已下载的源代码软件包文件
将已下载的http源码包复制到目录“/usr/local/srv/”中,该目录通常用于保存需要编译的程序源代码(目录)。在“/usr/local/src”中使用tar命令将源代码软件包释放。
在安装之前最好检查一下Linux系统时间,系统时间要大于一些安装包的时间才行。设置方法如下:
解压之后,查看解压的文件看是否有目录http-2.0.59,然后进入这个目录。
4、 编译前的配置
在httpd的源代码目录中使用“./configure”命令完成编译前的配置工作。首先查看一下是否具有configure这个命令。
在“./configure”命令中需要使用命令选项对Apache服务器进行配置,命令含义的选项如下:
“--prefix”设置了程序安装目录的绝对路径。如果不设置就安装到默认路径“/usr/local/bin”中。
“--ebable-so”选项设置了Apache服务器可以使用动态加载模块功能。
“--enable-rewrite”选项设置了Apache服务器具有rewrite功能。rewrite功能可以实现对动态网页地址的重写,从而使网页访问者可以通过更加简单和容易记忆的网页地址访问动态网页系统中的页面。
5、 程序编译过程
在使用configure命令对prozilla的源代码进行配置后,需要使用make命令进行程序的二进制编译。该过程是真正将程序源代码转换为可执行程序的过程。
6、 程序安装过程
“make install”命令将按照configure命令的“--prefix”选项中设定的安装路径将已编译完成的应用程序安装到目标目录apache2中。安装完成之后会在“/usr/local”下多出一个apache2目录。
通过“du –sh”命令可以查看apache2目录的大小。
7、启动httpd服务程序
安装完成之后,需要重新启动已安装的Apache服务程序,bin目录下的appachel是Apache服务器的启动脚本,使用start作为参数将启动httpd服务程序。
注意:千万不要使用“service httpd start”或“/etc/rc.d/init.d/httpd start”启动Apache服务,因为这两个都会启动默认安装Apache服务程序。
当httpd服务器程序启动后,可以使用网页浏览器访问Apache服务器的地址,如果显示下面的内容,则证明http服务已经成功启动。
注意:这个页面显示的是“/usr/local/apache2/htdocs/”下的index.html.var页面。这个目录是Apache的文档目录,默认里面没有index.html,而主页文档(在httpd.conf中的DirectoryIndex选项)默认有两个,一个为index.html,另一个为index.html.var,在最前面的优先显示。
为了更好地理解主页的意义,可以在htdocs目录下创建一个index.html主页。然后通过IE浏览器进行显示。
二、 Apache的全局配置
在实际的应用系统中,Apache服务器需要设置为在Liunx系统启动时自动运行,因此需要将apachectl脚本的启动命令写入rc.local文件。在rc.local文件中加入以上apachectl命令后,每次系统启动时都将自动启动Apache服务器。
编辑http.conf文档中的全局配置。
ServerRoot 设置了Apache服务器的根目录,该目录中包括了服务器运行必需的目录和文件。
Timeout用于设置Apache服务器与浏览器之间网络连接的超时秒数,默认为300s。
KeepAlive设置为on时,保持客户端与服务器直接的连接功能,可以请求一次传输多个文件。
MaxkeepAliveRequests设置客户端请求相应的最大文件数
KeepAliveTimeout 客户端两次请求需要间隔的最大时间为*秒
设置Apache服务器监听的网络端口号,默认为80。
ServerAdmin用于设置Apache服务器管理员的E-mail地址,可以通过E-mail地址及时联系Apache服务器管理员。
DocumentRoot用于设置Apache服务器网页(文档)根目录在Linux系统中的实际目录。
UserDir 设置用户的个人主页目录为public_html,即所有系统用户的宿主目录下如果有名为public_html的子目录,该目录将作为用户在Apache服务器中个人主页的文档根目录。
AddDefaultCharset GB2312 设置服务器的默认编码为GB2312
ServerName设置Apache服务器的主机名。
三、 域名虚拟主机的配置
为了更好地管理和测试虚拟主机,本实验将个人主页的根目录作为每一个虚拟主机的默认目录。这样一来可以通过测试个人主页来测试虚拟目录的可用性,二来也方便虚拟主机目录权限的分配。
1、 设置个人主页目录(同样也是虚拟主机目录)的访问权限
在httpd.conf中有默认的配置权限,只不过都被注释掉了,需要将注释去掉。如下:
需要修改的是在“Indexes”前加一个“-”即可。
2、创建系统用户
创建用户xiaonuo和dreamfire,并在各宿主目录下添加public_html目录,然后在public_html目录下添加主页用于测试。
由于Liunx系统对用户的宿主目录默认设置了比较严格的访问权限,因此需要为其他用户增加进入宿主目录的权限,以便Apache服务器能够有权限访问用户宿主目录中public_html子目录。
在个人主页地址中
http://contoso.msft/
表示Apache服务器的地址,“~xiaonuo”表示用户xiaonuo的宿主目录,“~”放在用户名之前表示指定用户的宿主目录。
3、 域名虚拟主机的配置
在Apache服务器的httpd.conf配置文件中进行域名虚拟主机的设置内容。默认有配置模板
配置项的含义如下:
NameVirtualHost 用于设置域名虚拟主机使用的IP地址,即“
www.xiaonuo.com
”和“
www.dreamfire.com
”域名将解析到的IP地址。
使用<VirtualHost 200.200.200.200>和</VirtualHost>建立在地址“200.200.200.200”上的虚拟主机区域;
在建立的虚拟主机区域中,使用ServerName设置当前虚拟主机所使用的域名;使用DocumentRoot设置当前主机所使用的文档根目录也就是个人主页的根目录;
设置完成之后,使用apachectl –t可以查看对httpd.conf的语法进行检测。
配置完成之后,需要重新启动apachectl服务。http.conf中的修改才能生效。
4、 测试虚拟主机的连通性
使用域名
www.xiaonuo.com/
和
www.dreamfire.com/
测试虚拟主机。
注意:配置虚拟主机,需要DNS服务器的支持,本实验中使用windows server 2003搭建了一台DNS服务器,也可以通过在客户机Linux的/etc/hosts文件中添加
www.xiaonuo.com
和
www.dreamfire.com/
的地址解析记录。或者在Windows系统目录%systemroot%\system32\drivers\etc\hosts中添加地址解析记录即可访问。