极限首页 业界焦点 软件工程师之路 系统工程师之路 网络工程师之路 软件下载 技术社区
 体验 Wine: Windows 到 Li
 Linux操作系统打印机配置全
 驱动SD/MMC读卡器
 Linux发行版制作指南
 redhat 安装程序 anaconda
 构造Linux的图形化安装程序
 使用Linux实现负载均衡
 Xen和虚拟化技术(一)
 Linux 操作系统安装盘的定
 在Linux上实现高可用服务
 体验 Wine: Windows 到 Li
 Linux操作系统打印机配置全
 驱动SD/MMC读卡器
 Linux发行版制作指南
 redhat 安装程序 anaconda
 构造Linux的图形化安装程序
 使用Linux实现负载均衡
 Xen和虚拟化技术(一)
 Linux 操作系统安装盘的定
 在Linux上实现高可用服务

Shell 中文手册

Python 2.3 中文手册

Python 2.4 中文手册

Mysql 4.x 中文手册

PHP 4.x 中文手册

Apache 2.x 中文手册
更多手册

站内搜索:
当前位置:首页>>系统工程师之路>>解决方案>>正文
动态虚拟主机全攻略
时间:2005-04-27 作者:不详 来源:不详

   本文将通过实例介绍如何借助常见的ApacheHTTP服务器进行动态虚拟主机配置。

所谓虚拟主机(Virtual Host)是指在一台物理服务器上提供多个网站的web服务(本文介绍的网站是具有独立域名可以在Internet上访问的站点),所谓动态这里指不需改变HTTP服务程序的配置(如httpd.conf文件)、不需中断(重起)web服务就可以添加新站点修改服务中的站点。使用本文介绍的方法一台物理服务器(唯一IP)理论上可以提供无数个虚拟主机(当然受资源限制)

本文介绍的方法适用于所有Apache类服务器,包括各种平台上的Apache Server, IBM HTTPServer, Tomcat等,因此对各种系统具有广泛适用性,笔者已经在Windows、各种LinuxAIX等平台上进行了验证。同时目前微软的Win2k serverIIS5.0还不能实现上述动态虚拟主机服务,虽然可以设置主机头在同一IP上提供域内的虚拟主机(可以通过http://host/ 这样的地址访问)但不能在同一IP上提供形如http://host.domain的虚拟主机(不能通过Internet访问)。本文基于以下环境为例:

硬件:IBM RS/6000 Mod 44P270,双路PowerPC处理器,1G RAM1G以太网

OSIBM AIX 4.3.3 patch 11

Web serverIBM HTTPServer 1.3.12.4 (对应Apache版本1.3.6

FTP serverAIX Toolbox for Linux Applications ProFTPD 1.2.4-1

网络环境:domain name: school.edu.cn  网络地址:12.34.56.0

服务器网络配置:IP: 12.34.56.78 Port: 80 域名:动态配置

此处再次强调本方法适用于各种软硬件平台,读者可以自行调整细节。

以下是具体实施步骤和相关解释:

1.         生成一个非root的管理员用户useradm(缺省属于staff),具有telnetsu权限就可以,生成web用户组。

mkdir /hosts (这里保存各站点的域名,数据保存于各用户的目录下)

2.         配置ProFTPD,注意

Umask  022

DefaultRoot    ~ web,!staff web组中非staff组用户将被限制在自己的 ~

RequireValidShell    no web组用户没有telnet权限)

(其它平台可以选择各种FTP服务器,但请关闭匿名服务,并设置chroot以限制用户只能访问自己的目录)。

3.         配置缺省用户属性模版/usr/lib/security/mkuser.default 注意:

pgrp = web

groups = web

login = false

rlogin = false

密码规则规定如下:

maxrepeats = 3

minalpha = 3

minother = 3

4.         配置httpd.conf

这里要插入做一点说明:IBM HTTPServer(以下称IHS)是IBM提供的一个免费(但不是开源,因美国的加密出口限制)软件可以到IBM网站去下载,它基本上就是ApacheIBM从很早就加入Apache社团并作出重要贡献。我们下载得到的是在各平台上已编译的可执行版本,目前支持Windows, Linux, Sorlars, AIX, HPUX等各种平台。IHS的版本号与Apache.org的不同,但各版本均有对应。据笔者研究IHSApache的主要区别有以下几点:

l         IHS内置IBMSSL模块,Apache使用OpenSSL的模块。

l         IHS全面支持IBM的软件产品如应用服务器Websphere, 并作了很好的整合。

l         IHS提供web界面的服务器管理程序。

l         内置IBM的高速缓存服务模块AFPA.(后文详述如何调用该模块)

为实现动态配置虚拟主机,需要细分以下情况来编辑httpd.conf

ü         所用Apache版本为1.3.6(对应HIS 1.3.12.4)(含)以下不提供mod_vhost_alias 模块,应使用mod_rewrite模块,配置举例如下:

#调入模块

LoadModule rewrite_module libexec/mod_rewrite.so

#http申请的主机头获得域名

UseCanonicalName Off

#定义对应虚拟主机的log记录

LogFormat "%{Host}i %h %l %u %t "%r" %s %b" vcommon

CustomLog logs/access_log vcommon

#规定目录的服务属性

Options Indexes FollowSymLinks ExecCGI

AllowOverride All

#下面定义改写地址规则,将客户端申请的地址http://*.school.edu.cn指向本地文件系统的/hosts/*/html, 将客户CGI地址http://*.school.edu.cn/cgi-bin指向本地文件系统的/hosts/*/cgi-bin(其中*是日后动态配置的域名)

RewriteEngine On

RewriteMap lowercase int:tolower

RewriteCond %{REQUEST_URI} !^/icons/

RewriteCond %{REQUEST_URI} !^/cgi-bin/

RewriteRule ^/(.*)$ / hosts/${lowercase:%{SERVER_NAME}}/html/$1

RewriteCond %{REQUEST_URI} ^/cgi-bin/

RewriteRule ^/(.*)$ / hosts/${lowercase:%{SERVER_NAME}}/$1 [T=application/x-httpd-cgi]

ü         当我们使用的Apache版本高于1.3.6,则使用mod_vhost_alias 模块来实现同样的功能:

#调入模块

LoadModule vhost_alias_module modules/mod_vhost_alias.so

#同上

UseCanonicalName Off

LogFormat "%{Host}i %h %l %u %t "%r" %s %b" vcommon

CustomLog logs/access_log vcommon

#定义动态虚拟主机

VirtualDocumentRoot /www/hosts/%0/docs

VirtualScriptAlias  /www/hosts/%0/cgi-bin

上述%0对应用户申请的域名部分

5.         *配置IBM高速缓存服务

IBMApache社团的一个重要贡献就是Fast Response Cache Accelerator(FRCA), 也就是用系统物理内存对web数据进行缓冲,这样可以大大提高我们这样的高负荷系统的性能。

l         安装http_server.frca文件组

l         no 命令设置以下参数:

nbc_limit (单位kb,一般取no显示的参数thewall数值的一半,缓存总量)

nbc_max_catch (单位b,缓存对象的最大文件尺寸,缺省128kb

nbc_min_catch (单位b,缓存对象的最小文件尺寸,缺省1b

l         用命令frcactrl load 启动服务(应在HIS之前启动)

l         配置httpd.conf

1)        LoadModule ibm_afpa_module_module libexec/mod_ibm_afpa.so
AddModule mod_ibm_afpa.c
#
上述模块应最先调入

2)        字段中开启缓存:
AfpaCache on

3)        在文件尾加入一行
AfpaEnable

4)        *设置缓存log:
AfpaLogFile path/filesname V-CLF

5)        启动IHS,

6)        验证FRCA的服务状态
frcactrl stat

6.         站点建立举例

这里假设服务运行中,要增加一个站点sras.school.edu.cn

l         DNS中注册新域名
sars        IN A              12.34.56.78
(所有虚拟主机都使用这个IP

l         useradm登录AIX,
su –
(获得root权限)
mkuser teacher
(用户名可以由sars站点管理员指定)
edquota –u –p olduser teacher
(给新用户设置与老用户olduser相同的空间限制)
passwd teacher
(设置密码)

l         teacher用户权限建立以下目录
/home/teacher/html
/home/teacher/cgi-bin

l         root身份执行以下操作
cd /hosts
mkdir sars
(这个目录使得域内用户可以省略域名访问http://sara/
ln –s sars sars.school.edu.cn
cd sars
ln –s /home/teacher/html html
(对应http://sara.school.edu.cn/
ln –s /home/teacher/cgi-bin cgi-bin
(对应http://sara.school.edu.cn/cgi-bin/

l         至此站点建立完成,可以通过浏览器访问新的站点。teacher用户可以通过ftp://sara.school.edu.cn来管理自己的站点,对于那些不熟悉FTP的老师在IE中启用FTP的文件夹视图可以使他们像管理本地文件一样管理网站。而即使老师不去写网页Apacheautoindex模块也可以将资源以目录的形式直接呈现给访问者,事实上像Apache.org这样的网站也大量运用目录方式向访问者提供资源。

 

这样我们就比较好地解决了每人拥有、管理自己网站的问题,一些没做过网站的老师也能自如地发布信息,学校信息化进程也借着这个契机向前迈进了一大步。希望这篇文章能够帮助更多的管理员,使更多有条件的用户早日拥有自己的网站。

 

参考文献:

1.          IBM REDBOOK: IBM HTTP Server Powered by Apache on RS/6000by Heinz Johner, Jouni Auer, Vitolis Bendinskas, Ng Chang Chyn, Shane Owenby, SunJong Park

2.         AIX Version 4.3 Base Documentation CD

3.         Apache HTTP Server Version 1.3 &2.0 Manual by the Apache HTTP Server Documentation Project.

4.         ProFTPD Documentation

5.         IBM Support website hints & tips Reference #: 1006402 by IBM Software Group 2002.12.16

推荐】【 】【关闭


关于极限 | 站内地图 | 意见反馈 | 广告服务 | 数据服务 | 联系我们
本站所刊登的文章,技术资料,软件均整理于网络资源或本站原创,转载请务必联系原作者或本站。
Copyright ? 2001-2004 UPLinux.com All Rights Reserved.
本站唯一联系信箱:
京ICP备05010519